错误:找不到模块:错误:包路径 ./dist/zone 未从包中导出

hei*_*flo 25 angular

从 Angular 16 升级到 Angular 17 后,当我尝试使用以下命令运行应用程序ng serve或使用以下命令构建应用程序时,出现以下错误消息ng build

./src/polyfills.ts:55:0-27 - 错误:找不到模块:错误:包路径 ./dist/zone 未从包 /Users/<MY_USERNAME>/<MY_ANGULAR_PROJECT>/node_modules/zone.js 导出(请参阅 /Users/<MY_USERNAME>/<MY_ANGULAR_PROJECT>/node_modules/zone.js/package.json 中的导出字段)

hei*_*flo 33

根据可以删除polyfill.ts文件吗?src/polyfill.js不再需要该文件(从 Angular 15 开始)。

"polyfills": "src/polyfills.ts"因此,要修复上述错误,只需将文件中所有出现的 替换angular.json"polyfills": ["zone.js"],您的 Angular 17 应用程序就会成功构建。

  • 如果您不仅有“import 'zone.js/dist/zone';” 在 polyfills.ts 中,您可以简单地注释掉那里的区域行,并通过添加 zone.js 来更新 angular.json,如下所示 "polyfills": ["zone.js", "src/polyfills.ts"] (3认同)

Mat*_*ler 16

0.14.0该版本zone.js引入了重大更改。(参见发行说明)。

不再允许深度导入和遗留dist/导入,例如zone.js/bundles/zone-testing.js和。并且也不再是包的一部分。zone.js/dist/zonezone-testing-bundlezone-testing-node-bundle

zone.js导入and的正确方法zone.js/testing是:

import 'zone.js';
import 'zone.js/testing';
Run Code Online (Sandbox Code Playgroud)


小智 8

在文件中src/polyfill.js,替换

import 'zone.js/dist/zone';
Run Code Online (Sandbox Code Playgroud)

import 'zone.js';
import 'zone.js/testing';
Run Code Online (Sandbox Code Playgroud)