You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:09:58