Angular 9升级后出现Strict Mode语法错误及依赖权限问题求助
解决Angular 9升级后的Strict Mode、Peer依赖及权限问题
咱们一步步拆解解决你升级后碰到的这些问题:
1. 核心错误:Uncaught SyntaxError: Strict mode code may not include a with statement
这个错误的根源基本是**@nguniversal/module-map-ngfactory-loader@8.1.1**版本太老,和Angular 9不兼容。旧版本的nguniversal代码里大概率还在用被严格模式禁止的with语句,而Angular 9的打包流程默认会启用严格模式检查,所以触发了报错。
你提到的strict-uri-encode是dev依赖,而且和这个错误关联不大——真正的问题出在未同步升级的nguniversal包上。
2. 解决Peer依赖警告 + 修复Strict Mode错误
直接把@nguniversal相关包升级到Angular 9兼容的版本就能解决两个问题:
- 先卸载旧版本:
npm uninstall @nguniversal/module-map-ngfactory-loader - 安装对应Angular 9版本的包(版本号要和你的Angular 9主版本匹配,比如9.1.x):
npm install @nguniversal/module-map-ngfactory-loader@9 --save
升级后,这个包的peer依赖会和Angular 9对齐,警告自动消失,同时它的代码也会兼容严格模式,with语句的错误也会跟着解决。
3. 卸载domino时的EPERM权限错误
这是典型的文件被占用问题,大概率是以下原因导致:
- Visual Studio还开着,锁定了
node_modules里的文件; - 本地Angular开发服务器(
ng serve)仍在运行; - 后台有node.js、npm相关进程在占用文件。
解决步骤:
- 关闭所有打开的VS窗口,停止
ng serve(按Ctrl+C); - 打开任务管理器,结束所有和node.js、npm相关的进程;
- 用管理员权限打开命令行,再执行卸载命令:
npm uninstall domino - 如果还是不行,先清理缓存再重新安装依赖:
npm cache clean --force # Windows系统执行下面的命令 rmdir /s /q node_modules && del package-lock.json # Mac/Linux系统执行下面的命令 rm -rf node_modules package-lock.json npm install
重新安装依赖后再尝试卸载domino即可。
最后提醒下,升级Angular版本时优先用官方的ng update命令,它会自动处理大部分依赖兼容问题:
ng update @angular/cli @angular/core ng update @nguniversal/express-engine
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

