Angular 10升级至13后执行ng serve报编译错误求助
Angular 10升级到13后ng serve编译错误解决方案
问题分析
报错Left side of comma operator is unused and has no side effects出现在!(0, fs_1.existsSync)(startPath)代码中,这种(0, fn)的写法是CommonJS转ES模块时用来修正this指向的语法,但Angular 13默认启用的严格TypeScript检查(noUnusedExpressions规则)会将其判定为无效表达式。
解决方案
1. 临时关闭未使用表达式检查
在tsconfig.json的compilerOptions中添加或修改noUnusedExpressions配置:
"compilerOptions": { // 原有配置... "noUnusedExpressions": false }
如果你的配置中启用了strict: true,可以单独覆盖该规则:
"compilerOptions": { // 原有配置... "strict": true, "noUnusedExpressions": false }
2. 升级第三方依赖
检查项目中的第三方依赖,尤其是涉及文件操作(如fs相关)的包,确保它们兼容Angular 13。运行以下命令查看过时依赖:
npm outdated
将所有不兼容的依赖升级到最新版本,避免依赖代码中的旧语法触发TS检查。
3. 调整TypeScript编译目标与模块配置
Angular 13推荐使用更现代的编译配置,修改tsconfig.json中的以下选项:
"compilerOptions": { // 原有配置... "target": "es2020", "module": "es2020", "lib": [ "es2020", "dom", "esnext.asynciterable" ] }
现代ES模块语法无需依赖(0, fn)这类兼容写法,可从根源避免该错误。
4. 修正tsconfig中的冗余配置
你的paths配置中rxjs路径重复,修正为:
"paths": { "@angular/*": ["node_modules/@angular/*"], "rxjs": ["node_modules/rxjs"] }
内容的提问来源于stack exchange,提问作者Gajanan Bele
相关产品推荐
相关产品推荐

