首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vite 2导入摩纳哥编辑器

使用Vite 2导入摩纳哥编辑器
EN

Stack Overflow用户
提问于 2021-01-29 11:33:09
回答 2查看 2.7K关注 0票数 5

目前,我已经建立了一个Vite 2项目,并将monaco-editor作为依赖项。

每当我试着使用它时,它都说工人不是进口的。

代码语言:javascript
复制
editorSimpleWorker.js:454 Uncaught (in promise) Error: Unexpected usage
    at EditorSimpleWorker.loadForeignModule (editorSimpleWorker.js:454)
    at webWorker.js:38

由于我使用的是Vite 2,所以我假设只需在plugins数组中指定rollup插件rollup-plugin-monaco-editor。不过,我仍然会明白这个问题。

代码语言:javascript
复制
export default defineConfig({
  plugins: [
    vue(),
    monaco({ languages: ['javascript'] }),
  ],
});

是否有适当的方法将monaco-editor导入到Vite 2项目中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-30 09:26:31

使用最新的版本(2.0.0-beta.59),它是固定的。

现在您可以添加环境工作者,而无需任何进一步的配置(ref:https://github.com/vitejs/vite/discussions/1791)

代码语言:javascript
复制
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'

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()
  }
}
票数 3
EN

Stack Overflow用户

发布于 2021-03-24 15:11:57

接受的答案在dev build中是可以的,但是在当前版本(v2.1.2)的生产构建中,Uncaught ReferenceError: window is not defined是在页面加载时引发的。

因此,除了接受的答案之外,还需要将build.rollupOptions.output.manualChunks添加到vite.config.js中,如下所示。

代码语言:javascript
复制
// vite.config.js
import { defineConfig } from 'vite';
const prefix = `monaco-editor/esm/vs`;
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          jsonWorker: [`${prefix}/language/json/json.worker`],
          cssWorker: [`${prefix}/language/css/css.worker`],
          htmlWorker: [`${prefix}/language/html/html.worker`],
          tsWorker: [`${prefix}/language/typescript/ts.worker`],
          editorWorker: [`${prefix}/editor/editor.worker`],
        },
      },
    },
  },
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65953675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档