[英]Using Monaco Editor in Svetle with Rollup
monaco-editor v0.31.1摩纳哥编辑器 v0.31.1
I am following this gist, code goes below我遵循这个要点,代码如下
<script lang="ts">
import type monaco from 'monaco-editor';
import { onMount } from 'svelte';
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';
let divEl: HTMLDivElement = null;
let editor: monaco.editor.IStandaloneCodeEditor;
let Monaco;
onMount(async () => {
// @ts-ignore
self.MonacoEnvironment = {
getWorker: function (_moduleId: any, label: string) {
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();
}
};
Monaco = await import('monaco-editor');
editor = Monaco.editor.create(divEl, {
value: ['function x() {', '\tconsole.log("Hello world!");', '}'].join('\n'),
language: 'javascript'
});
return () => {
editor.dispose();
};
});
</script>
<div bind:this={divEl} class="h-screen" />
It fails on compiliation, saying the worker files cannot be found.它在编译时失败,说找不到工作文件。
[:] Error: Could not load C.\projects\svelte\node_modules\monaco-editor\esm\vs\editor\editor.worker?js.worker (imported by src\MonacoEditor:svelte): ENOENT, no such file or directory: open 'C.\projects\svelte\node_modules\monaco-editor\esm\vs\editor\editor.worker?js?worker' [:] 错误:无法加载 C.\projects\svelte\node_modules\monaco-editor\esm\vs\editor\editor.worker?js.worker(由 src\MonacoEditor:svelte 导入):ENOENT,没有这样的文件或目录:打开 'C.\projects\svelte\node_modules\monaco-editor\esm\vs\editor\editor.worker?js?worker'
In fact, editor.worker.js
exists at the specific path.实际上, editor.worker.js
存在于具体路径中。 How to import monaco editor in svelte?如何在 svelte 中导入 monaco 编辑器?
Thanks in advance提前致谢
I just used that exact gist and it worked perfectly.我只是使用了那个确切的要点,它工作得很好。 Here are my steps:这是我的步骤:
<script lang="ts">
), you should answer Yes to the "Use TypeScript?"注意:由于本要点使用 TypeScript ( <script lang="ts">
),您应该对“使用 TypeScript?”回答“是”。 question when scaffolding the project.搭建项目时的问题。 I suspect that your current project may not be set up for TypeScript and this could have something to do with the error you're seeing.我怀疑您当前的项目可能未针对 TypeScript 设置,这可能与您看到的错误有关。monaco-editor
: npm i monaco-editor
安装monaco-editor
: npm i monaco-editor
src/routes/index.svelte
with the gist code将src/routes/index.svelte
的内容替换为gist 代码npm run build
构建应用程序: npm run build
This works great, but actually instead of step 4 I normally run in debug mode, so I open VSCode in the project folder and then:这很好用,但实际上我通常在调试模式下运行而不是第 4 步,所以我在项目文件夹中打开VSCode ,然后:
npm run dev
在 VSCode go 到终端并启动调试器: npm run dev
Chrome
启动调试器:按 F5(或 Run|Start Debugging),选择Chrome
launch.json
pops up;新品launch.json
弹出; edit url to point to default debug address: "url": "http://localhost:3000",
编辑 url 指向默认调试地址: "url": "http://localhost:3000",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.