升级最新Angular CLI后执行ng serve报错无法解析zone.js模块如何解决?
这个报错是最新版Angular CLI配套的zone.js v0.13+版本目录结构调整导致的:旧版本zone-legacy包路径为zone.js/plugins/zone-legacy,新版本已迁移到zone.js/legacy/zone-legacy,如果项目开启了ES5兼容模式,CLI自动加载ES5 polyfill时就会找不到对应模块。
你可以按照以下步骤修复:
- 第一步:先升级zone.js到对应匹配的最新版本
执行命令:npm install zone.js@latest --save - 第二步:如果不需要兼容IE等仅支持ES5的老旧浏览器,直接关闭ES5编译即可
打开项目根目录的tsconfig.json,修改compilerOptions下的target参数:"compilerOptions": {
"target": "ES2022",
// 其余原有配置保持不变
}
修改后重新执行ng serve即可正常启动。 - 第三步:如果确实需要保留ES5兼容,手动配置正确的legacy包导入路径
打开项目根目录的src/polyfills.ts,添加一行导入代码:import 'zone.js/legacy/zone-legacy';
再打开angular.json,找到projects -> [你的项目名] -> architect -> build -> options -> polyfills配置项,删除其中所有旧的zone.js相关导入规则,避免路径冲突。 - 第四步:如果上述操作后仍有报错,清理缓存重新安装依赖
依次执行以下命令:rm -rf node_modules package-lock.json npm install ng serve
内容的提问来源于stack exchange,提问作者Reem Al-Assaf
相关产品推荐
相关产品推荐

