执行ng serve遇Unexpected token '??='错误,Node.js14.21.3环境求助
解决Angular中
ng serve报错Unexpected token '??='的问题 问题场景
执行ng serve时触发以下错误:
An unhandled exception occurred: Unexpected token '??='
See "C:\Users\LENOVO\AppData\Local\Temp\ng-XuPjaQ\angular-errors.log" for further details.
错误溯源到@angular-devkit/core包内代码:
[error] B:\projet\skysoft\frontend\skytransit-frontend\node_modules\@angular-devkit\core\src\json\schema\transforms.js:17 value ??= schema.default; ^^^ SyntaxError: Unexpected token '??=' at wrapSafe (internal/modules/cjs/loader.js:1029:16) at Module._compile (internal/modules/cjs/loader.js:1078:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10) at Module.load (internal/modules/cjs/loader.js:979:32) at Function.Module._load (internal/modules/cjs/loader.js:819:12) at Module.require (internal/modules/cjs/loader.js:1003:19) at require (internal/modules/cjs/helpers.js:107:18) at Object.<anonymous> (B:\projet\skysoft\frontend\skytransit-frontend\node_modules\@angular-devkit\core\src\json\schema\index.js:37:33) at Module._compile (internal/modules/cjs/loader.js:1114:14) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10)
已切换到Node.js 14.21.3,手动将value ??= schema.default替换为value = value !== undefined ? value : schema.default后问题仍未解决。
解决方案
1. 匹配@angular-devkit/core与Node.js版本
??=(空值赋值运算符)在Node.js 14.x中为实验性支持,直到Node.js 15.0.0才正式稳定。当前@angular-devkit/core版本可能已使用该语法,但Node.js 14.21.3支持不完善:
- 查看当前包版本:
npm list @angular-devkit/core - 降级到兼容Node.js 14的版本(需匹配你的Angular主版本,示例为14.x系列):
npm install @angular-devkit/core@14.2.11 --save-dev
2. 彻底清理依赖缓存后重装
手动修改node_modules内文件会被后续安装覆盖,需彻底清理:
- 删除
node_modules文件夹和package-lock.json文件 - 清理npm缓存:
npm cache clean --force - 重新安装依赖:
npm install
3. 确认NVM版本切换生效
部分场景下终端环境未刷新,导致实际使用的Node版本不匹配:
- 检查当前Node版本:
node -v - 若版本不符,重启终端或执行:
nvm use 14.21.3
4. 同步Angular CLI版本
Angular CLI版本需与Node.js版本兼容:
- 查看当前CLI版本:
ng version - 降级到兼容Node.js 14的CLI版本(示例为14.x系列):
npm install @angular/cli@14.2.11 --save-dev
内容的提问来源于stack exchange,提问作者nerel ndongmo
相关产品推荐
相关产品推荐

