NG Build、NPM start运行ProseMirror下NGx-Editor报错求助
Ngx-Editor 依赖构建报错修复方案
Ngx-Editor构建报错截图
项目package.json配置截图
这类报错全部出现在node_modules下的Ngx-Editor依赖内时,基本逃不开三类原因:依赖版本和当前项目Angular版本不匹配、构建工具默认对第三方依赖做了语法/类型校验、本地依赖缓存损坏,可按优先级选以下方案处理:
临时紧急规避方案(适合赶发布节点场景)
- 开启第三方库类型检查跳过配置:打开项目根目录的
tsconfig.json,在compilerOptions节点下添加"skipLibCheck": true,保存后重新执行构建命令。该配置会直接跳过所有node_modules下依赖的.d.ts类型校验,不会影响业务代码的类型检查,能最快绕过依赖本身的类型报错阻断构建的问题。 - 强制锁版本重装清缓存:先执行命令删除现有依赖目录和锁文件,不同包管理器对应命令如下:
# npm 环境 rm -rf node_modules package-lock.json npm cache clean --force # yarn 环境 rm -rf node_modules yarn.lock yarn cache clean # pnpm 环境 rm -rf node_modules pnpm-lock.yaml pnpm store prune
删除后打开package.json,把ngx-editor的版本号前的^或者~符号去掉,固定到和当前Angular大版本完全匹配的稳定版(比如Angular16就固定为"ngx-editor": "16.0.1"这类对应大版本的最新稳定版),重新执行install命令装依赖后再构建。
长期稳定修复方案
- 配置构建流程主动转译Ngx-Editor:Angular项目默认不会转译
node_modules下的第三方ES模块,很容易出现高版本语法和当前项目构建工具不兼容的报错。打开项目根目录的angular.json,找到对应项目的build配置节点,添加以下配置:
{ "architect": { "build": { "options": { "allowedCommonJsDependencies": ["ngx-editor"], "transpileDependencies": ["ngx-editor"] } } } }
配置后构建工具会主动把ngx-editor的源码转译为当前项目兼容的语法版本,从根源解决语法兼容类报错。
- 本地打补丁修复依赖本身的代码问题:如果排查后确认是ngx-editor对应版本本身存在代码bug,可以用
patch-package工具做本地持久化修复:先手动修改node_modules/ngx-editor目录下对应报错位置的代码,确认构建正常后执行npx patch-package ngx-editor,工具会自动在项目根目录生成patches文件夹存储修改记录,后续不管是本地重装依赖还是CI环境装依赖,都会自动应用这个修复,不需要每次手动改依赖代码。
内容的提问来源于stack exchange,提问作者Sunny Srivastava
相关产品推荐
相关产品推荐

