vue3+vite+monaco-editor+ts编辑报错Error: Unexpected usage at EditorSimpleWorker.loadForeignModule

[Bug] packaged into components by lib ,Unexpected usage at yc.loadForeignModule · Issue #4026 · microsoft/monaco-editor (github.com)

感谢大佬的解决方案,这里可以直接参考以上链接的issue。

有三种解决方案:

1. 使用对应版本

"monaco-editor": "^0.38.0",
"vite": "^3.0.2",
"vite-plugin-monaco-editor": "^1.1.0",

2. 自己手动创建一个lib,例如monco.ts, 之后导入的时候直接使用 import {monco} from "@/lib/monco"即可(注:和正常使用是一样的)。

import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution';
import 'monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution';
import 'monaco-editor/esm/vs/editor/editor.all.js';

import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
import 'monaco-editor/esm/vs/language/json/monaco.contribution';

import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';

// @ts-ignore
self.MonacoEnvironment = {
  getWorker(_, label) {
    if (label === 'json') {
      return new jsonWorker();
    }
    if (label === 'css' || label === 'scss' || label === 'less') {
      return new cssWorker();
    }
    if (label === 'html' || label === 'handlebars' || label === 'razor') {
      return new htmlWorker();
    }
    if (label === 'typescript' || label === 'javascript') {
      return new tsWorker();
    }
    return new editorWorker();
  },
};

export { monaco };

3. 使用插件(以下方式我出现错误:monacoEditorPlugin not a function,删掉package中的type = module正常。你们可以自己试试。)

import monacoEditorPlugin from 'vite-plugin-monaco-editor';

 export default defineConfig({
  build: {
    lib: {
     ....
    },
  },
  plugins: [
     monacoEditorPlugin({
      languageWorkers: ['editorWorkerService', 'json', 'typescript'],
    }),
...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值