将Angular应用转为Angular Universal时遇模块缺失错误求助
解决Angular Universal安装时
@schematics/angular/utility/json-file找不到的问题 这个错误本质是你的Angular CLI版本和安装的@nguniversal包版本不兼容导致的——新版Angular CLI调整了schematics工具类的路径,而旧版本的@nguniversal还在引用旧的模块路径,所以才会出现找不到模块的异常。
给你几个针对性的解决方案,按顺序尝试:
第一步:匹配Angular和@nguniversal的版本号
先运行ng version查看你的Angular主版本(比如14.2.x、15.1.x),然后安装对应版本的@nguniversal,而不是默认拉取最新版。比如你用的是Angular 14,就执行:ng add @nguniversal/express-engine@14 --clientProject my-app版本号必须和你的Angular主版本完全一致,这是最常见的解决办法。
第二步:清理依赖重新安装
如果版本匹配后还是报错,可能是本地依赖缓存有问题:- 删除项目根目录的
node_modules文件夹和package-lock.json文件 - 执行
npm install重新安装所有依赖 - 再次运行Universal的添加命令
- 删除项目根目录的
第三步:清理Angular CLI缓存
有时候CLI的缓存会导致奇怪的依赖引用问题,试试强制清理缓存:npm cache clean --force清理完成后再重新执行
ng add命令。
如果你的项目用的是非常老的Angular版本(比如低于12),可能需要参考对应版本的Universal官方文档调整安装命令,但目前主流版本只要版本匹配就能解决这个问题。
内容的提问来源于stack exchange,提问作者Evangelous Glo
相关产品推荐
相关产品推荐

