升级monaco-editor至v0.41.0后TypeScript注册失败,如何获取其Worker?
解决monaco-editor v0.41.0+ "TypeScript not registered!" 错误
从v0.41.0版本开始,monaco-editor不再自动内置TypeScript服务的注册逻辑,需要手动完成TypeScript的注册配置,具体操作如下:
1. 补全依赖安装
如果项目未安装typescript包,先执行安装:
npm install typescript --save # 或 yarn add typescript
2. 初始化前注册TypeScript服务
在创建编辑器实例之前,添加以下代码完成TypeScript的注册配置:
import * as monaco from 'monaco-editor'; import typescript from 'typescript'; // 配置TypeScript编译选项(可根据需求调整) monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ target: monaco.languages.typescript.ScriptTarget.ESNext, module: monaco.languages.typescript.ModuleKind.CommonJS, strict: true, esModuleInterop: true, skipLibCheck: true, forceConsistentCasingInFileNames: true }); // 注册TypeScript Worker monaco.languages.typescript.typescriptDefaults.setWorker(async () => { const workerModule = await import('monaco-editor/esm/vs/language/typescript/ts.worker?worker'); return new workerModule.default(); });
3. 保持原有运行代码不变
你之前编写的编辑器动作代码无需修改,但要确保上述注册逻辑先于编辑器实例创建执行,保证TypeScript服务已完成注册。
CDN引入场景补充
如果项目通过CDN引入monaco-editor,需额外配置Worker路径:
monaco.config({ paths: { 'vs': 'https://cdn.jsdelivr.net/npm/monaco-editor@0.41.0/min/vs' }, worker: { 'typescript': 'https://cdn.jsdelivr.net/npm/monaco-editor@0.41.0/min/vs/language/typescript/ts.worker.js' } });
内容的提问来源于stack exchange,提问作者Martin Schuhfuß
相关产品推荐
相关产品推荐

