使用 ng build --prod 进行生产构建后 Angular5 应用程序失败

Angular5 application failing after production build with ng build --prod

我完全不知道如何调试它。

我已经使用 Angular 5 构建了一个应用程序,并且在使用 ng serve --aot --progress=false --proxy-config proxy.conf.json

进行开发期间运行非常棒

现在我已准备好部署到生产环境。我正在 运行ning ng build --prod --sm=false --aot --output-path=dist/client 并且构建成功。

我将客户端文件复制到服务器,当我在浏览器中 运行 时收到以下错误。

火狐:

TypeError: t[r] is undefined          main.1eda0feb0dddc7c4747b.bundle.js:1:791705

Chrome

main.d8cd32d2ec09f8365918.bundle.js:1 Uncaught TypeError: Cannot read property 'call' of undefined
at n (main.d8cd32d2ec09f8365918.bundle.js:1)
at Object.t.exports (main.d8cd32d2ec09f8365918.bundle.js:1)
at n (main.d8cd32d2ec09f8365918.bundle.js:1)
at Object.t.exports (main.d8cd32d2ec09f8365918.bundle.js:1)
at n (main.d8cd32d2ec09f8365918.bundle.js:1)
at Object.t.exports (main.d8cd32d2ec09f8365918.bundle.js:1)
at n (main.d8cd32d2ec09f8365918.bundle.js:1)
at Object.t.exports (main.d8cd32d2ec09f8365918.bundle.js:1)
at n (main.d8cd32d2ec09f8365918.bundle.js:1)
at Object.<anonymous> (main.d8cd32d2ec09f8365918.bundle.js:1)

如果我转到主包的特定部分:

...return t[r].call(i.exports,i,i.exports,n),i.l...

我究竟该如何调试并找出导致问题的原因?

使用 --aot=false 对我的情况有所帮助

UPD:这是 Angular CLI 中的错误。已在 1.6.6 版本修复

在与 angular/cli 开票后,用户在 Gitter 上与团队进行了对话,这似乎与 cli 依赖性有关。添加 --build-optimizer=false 的标志应该可以解决大多数情况。他们希望通过@angular/cli 1.6.5

解决这个问题

完整对话可在 https://github.com/angular/angular-cli/issues/9244#issuecomment-358828083

阅读

我们不应该每次都使用--aot=false,因为构建创建成功但部署后无法运行。无论您在应用程序中使用什么,最好在全局中使用确切的 angular clit 版本。

我通过使用命令

更改我的 angular CLI 版本解决了这个问题
npm install --save-dev @angular/cli@1.6.8

检查你的包-lock.json你的 angular 版本并在上面的命令中更改版本。