Angular16/17+ngx-monaco-editor-v2 v16报错:Cannot read properties of undefined(replace)
解决方案
1. 对齐版本兼容性
ngx-monaco-editor-v2 v16与monaco-editor v0.41存在版本不匹配问题,需调整monaco-editor到兼容版本:
- 卸载当前版本:
npm uninstall monaco-editor - 安装对应兼容版(如v0.40.0):
npm install monaco-editor@0.40.0 --save
2. 修复NLS加载配置
该错误多因国际化(NLS)资源加载异常导致,需在Angular配置中手动指定资源路径:
- 修改
angular.json的assets数组,添加Monaco的核心资源:
"assets": [ "src/favicon.ico", "src/assets", { "glob": "**/*", "input": "./node_modules/monaco-editor/min/vs", "output": "/vs/" } ]
- 在
main.ts中配置Monaco环境,指定NLS文件路径:
import * as monaco from 'monaco-editor'; self.MonacoEnvironment = { getWorkerUrl: (moduleId, label) => { switch (label) { case 'json': return './vs/language/json/json.worker.js'; case 'css': case 'scss': case 'less': return './vs/language/css/css.worker.js'; case 'html': case 'handlebars': case 'razor': return './vs/language/html/html.worker.js'; case 'typescript': case 'javascript': return './vs/language/typescript/ts.worker.js'; default: return './vs/editor/editor.worker.js'; } }, getLocalizationFile: (languageId) => `/vs/nls/${languageId}.json` };
3. 用最简配置排查问题
暂时移除自定义配置,使用基础初始化代码排除代码干扰:
组件模板:
<ngx-monaco-editor [options]="{ language: 'javascript' }" [(ngModel)]="code" ></ngx-monaco-editor>
组件类:
import { Component } from '@angular/core'; @Component({ selector: 'app-editor', templateUrl: './editor.component.html', }) export class EditorComponent { code = 'console.log("Hello World");'; }
4. 清理缓存重建项目
- 删除依赖目录与锁文件:
rm -rf node_modules package-lock.json(Windows:rmdir /s /q node_modules && del package-lock.json) - 重新安装依赖:
npm install - 清理Angular缓存:
ng clean - 重建项目:
ng build
内容的提问来源于stack exchange,提问作者Suppadeliux
相关产品推荐
相关产品推荐

