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

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相关进程在占用文件。

解决步骤:

  1. 关闭所有打开的VS窗口,停止ng serve(按Ctrl+C);
  2. 打开任务管理器,结束所有和node.js、npm相关的进程;
  3. 用管理员权限打开命令行,再执行卸载命令:
    npm uninstall domino
    
  4. 如果还是不行,先清理缓存再重新安装依赖:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:12:48