我有一个Angular-CLI项目,该项目利用object-hash库从对象创建哈希。通常我会把
import * as objectHash from 'object-hash'
在我的一个组件文件的顶部,然后在需要哈希的任何地方进行const hash = objectHash(obj)
。
我刚刚将项目升级到Angular 8,突然,Angular项目serves >>很好,但是当我运行生产版本时,出现错误:Cannot read property 'crypto' of undefined
。
这是因为Angular 8生成了差异JavaScript
,从而为较新的浏览器(如<script type="module">
)和较旧的浏览器(如<script nomodule>
)生成了一些捆绑软件。当脚本具有type="module"
时,显然this
的处理方式有所不同-因此object-hash库对this
的引用已损坏:https://github.com/puleos/object-hash/issues/71有人对我如何解决这个问题有任何见解吗?
我看到的可能的解决方案是:
以某种方式导入object-hash
库使用与浏览器兼容的完全不同的对象哈希库(我还没有找到)
我有一个Angular-CLI项目,该项目利用对象哈希库从对象创建哈希。通常我会把import * as objectHash从'object-hash'放在我其中一个的顶部...
我认为最简单的方法是使用您提到的issue中的自定义Webpack配置,因为它是构建阶段的问题,而不是运行时的问题。如我所见,棱角分明的核心成员不会很快解决此问题。
提交@angular-builders/custom-webpack
后,将1e0835c升级到object-hash应该可以解决问题(请参见所报告的问题中的v2.0.1
)