Angular旧项目执行ng serve时transforms.js出现语法错误求助
解决Angular项目
ng serve报错Unexpected token '??='的方案 错误原因分析
- Node.js版本过低:
??=是ES2021的空值合并赋值运算符,仅支持Node.js 14.17.0及以上版本(Angular 17要求Node.js 18.13.0+或20.9.0+),当前Node.js版本不支持该语法。 - 依赖版本不兼容:项目中Angular CLI版本为14.2.13,但
@angular-devkit系列依赖却使用了17.2.0,跨大版本的依赖混合会引发兼容性问题。
具体解决步骤
步骤1:升级Node.js版本
- 查看当前Node.js版本:执行命令
node -v - 安装符合要求的Node.js版本:推荐安装LTS版本(如18.x或20.x),可直接通过Node.js官网下载安装包,或使用nvm(Node版本管理器)切换版本:
# 安装nvm后,执行以下命令安装并切换到指定版本 nvm install 18.19.0 nvm use 18.19.0
步骤2:统一Angular依赖版本
方案A:降级@angular-devkit依赖匹配Angular CLI 14
修改项目根目录下的package.json文件,将所有@angular-devkit开头的依赖版本改为0.1402.13,typescript版本改为4.8.x(Angular 14对应TS版本范围):
{ "devDependencies": { "@angular-devkit/architect": "0.1402.13", "@angular-devkit/build-angular": "14.2.13", "@angular-devkit/core": "14.2.13", "@angular-devkit/schematics": "14.2.13", "@angular/cli": "14.2.13", "@schematics/angular": "14.2.13", "typescript": "4.8.4" } }
执行以下命令重置依赖:
# Windows系统 rmdir /s /q node_modules del package-lock.json # macOS/Linux系统 rm -rf node_modules package-lock.json npm install
方案B:升级整个Angular项目到17.x版本
若计划升级项目,执行官方升级命令:
ng update @angular/cli@17 @angular/core@17
升级过程中按提示处理依赖冲突,确保所有Angular相关依赖版本统一为17.x。
步骤3:重新启动项目
完成上述操作后,执行 ng serve 尝试启动项目。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

