使用webpack的Angular cli:没有刷新使用build执行的代码?

时间:2017-07-09 11:18:07

标签: angular webpack angular-cli

我正在构建一个基于角度cli的网络应用程序。我在chrome开发人员工具控制台中出错,我认为现在我的代码已经解决了。但是,当我重建并刷新浏览器(甚至删除我的浏览器缓存)时,我仍然看到错误!

该错误与我正在构建的外部库中导入的共享组件有关。

这是:

compiler.es5.js:1689 Uncaught Error: Can't resolve all parameters for AuthService: (?, [object Object]).
at syntaxError (compiler.es5.js:1689)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getDependenciesMetadata (compiler.es5.js:15756)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getTypeMetadata (compiler.es5.js:15624)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getInjectableMetadata (compiler.es5.js:15610)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getProviderMetadata (compiler.es5.js:15901)
at compiler.es5.js:15830
at Array.forEach (<anonymous>)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getProvidersMetadata (compiler.es5.js:15790)
at compiler.es5.js:15365
at Array.forEach (<anonymous>)

当我运行ng serve --prod时,错误消失,我的代码运行得很漂亮。 然后,如果我再次运行ng serve而没有--prod,我会再次看到错误。

这让我疯了。

可能导致这种情况的原因是什么? webpack是否缓存?如果是这样,我如何刷新以便运行我的最新代码?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我也看到过这种情况(但并非总是如此)。默认情况下,浏览器会缓存捆绑包,当您使用ng serve时,捆绑包的名称保持不变。您没有在ng serve -prod中看到此错误的原因是每个生产版本在捆绑名称中都有不同的哈希代码,因此浏览器不会使用缓存版本。

如果您以隐身模式运行浏览器,则不应该遇到此问题。