开发者问题收集

React Native 加密流模块未定义

2021-04-11
1827

我正在尝试使用 [react-native-crypto][1] ,以便学习如何转换 nodejs 以便将来在 React Native 项目中使用。不幸的是,我无法成功运行它。我遇到了 stream 未定义的问题。 ERROR TypeError:未定义不是对象(评估'_$$_REQUIRE(_dependencyMap[0], "stream").Transform.call')

如果您曾经遇到过类似的问题,我非常感谢您的帮助。

此外,我附上了问题的屏幕截图,如下所示 在此处输入图像描述

2个回答

对于仍在尝试解决此问题的任何人,我已经找到了适合自己的解决方案。因此,在 node_modules/cipher-base/index.js 中,文件顶部应该有一行将变量 Transform 定义为 var Transform = require('stream').Transform 。由于某种原因,它不喜欢模块 stream ,因此需要将其更改为 readable-stream 。因此,变量 Transform 现在应为 var Transform = require('readable-stream').Transform

据我所知,它尝试引用的 stream 模块实际上不是一个可以使用的模块。然而,它被引用的原因似乎是因为根目录中的 tsconfig.json 文件指定了 "stream": ["./node_modules/readable-stream"] 作为路径,几乎就像是让 stream 引用 readable-stream 模块,理论上它在调用时应该引用该模块。但在这种情况下,它并没有发生,所以我们需要明确定义我们引用的是 readable-stream 模块。

希望这能帮助其他人,并防止其他人像我一样连续几个小时挠头!

behemoth3752
2022-09-08

我已通过在 metro.config.js 中进行如下编辑找到了解决方案:

resolver: {
    extraNodeModules: {
      stream: require.resolve('stream-browserify'),
    }
  },
Sinal
2021-04-12