有一个我们为团队使用而制作的npm包,里面我们正在使用这个uuidjs
。现在我已经在我的Create React应用程序上安装了这个自定义的npm包,该应用程序正在用testing-library
进行测试。
当我测试从这个具有uuidjs
的自定义包中导入文件的组件时,我得到以下错误:
crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported
我知道这个问题的答案是install react-native-get-random-values
。但我的困惑是,我可以在使用React.js的CRA中安装这个吗?react-native
与它或它的独立性有关系吗?
问题
当你运行测试时,我怀疑你是在Node.js中运行的测试环境中运行它。crypto.getRandomValues
只能从web API中获得。它不存在于crypto
下的Node中,请参阅crypto
上的Node文档。Node确实提供了一个web加密API,它有getRandomValues
,但uuid
库不会知道它
解决方案
您可以自己模拟或polyfillcrypto.getRandomValues
,请参阅:如何使用Jest测试使用crypto或window.msCrypto.的函数