我正在将使用grunt构建的用Javascript编写的AngularJs应用程序转换为使用Webpack 4构建的用Typescript编写的Angular 6应用程序。
我将其中一个简单的AngularJs服务转换为Typescript(但仍将其保留为AngularJs服务),因此基本上我将其转换为一个类并将其声明为angularJs服务。我使用webpack-dev-server构建并运行了它,一切都按预期运行
然后我使用生产配置来构建它,该配置执行诸如缩小等的常规操作。现在,当我运行代码时,出现了错误
TypeError: e[r].call is not a function
然后我开始逐块更改生产配置以匹配开发配置,以查看是什么导致了差异,这是devtool属性
在开发中,我将其设置为“ eval”,在生产中,则将其设置为“ source-map”。我最初以为该错误与缩小有关,但事实并非如此。当代码未缩小时,仍然会发生错误
TypeError: modules[moduleid].call is not a function
调试时,我可以看到模块中的一个是具有3个属性的数组,这与所有其他模块都是函数不同,尝试在数组上调用'call'方法会引发异常
0: "module"
1: "exports"
2: ƒ (e,t)
为什么devtool属性会影响工作代码?
编辑:
使用文档页面上列出的任何生产devtool类型似乎都会导致错误,甚至是“无”: