【问题标题】:react-native-twitter-lite: Error: Unable to resolve module 'crypto'react-native-twitter-lite:错误:无法解析模块“加密”
【发布时间】:2022-01-16 13:47:19
【问题描述】:

我已按照说明通过npm page ....按照以下说明安装 react-native-twitter-lite:

npm install twitter-lite

....然后在 app.js 上:

import Twitter from 'twitter-lite';

const twtClient = new Twitter({
  consumer_key: 'xxxx',
  consumer_secret: 'xxxx',
});

...我收到错误 Unable to resolve module crypto from node_modules\twitter-lite\dist\twitter.js: crypto could not be found within the project ...即使我可以看到文件 node_modules\twitter-lite\dist\twitter.js 存在

【问题讨论】:

  • 你使用的是什么节点版本?

标签: react-native


【解决方案1】:

如果您安装本机模块,您将需要重新构建您的应用程序。它只是热重载。

如果这不是您的问题,但您使用的是 typescript,那么您可能缺少一个可以使用以下方法解决的依赖项:

npx 类型同步

您使用的是 Expo 还是 Xcode/Android Studio?如果是 Expo,请注意 Expo 处理 Bare 和 Managed 工作流程。如果您使用的是托管工作流程,您可能会遇到这些问题,因为 Expo 正在为您管理本机模块,因此您可能需要检查 Expo 是否与您正在使用的模块具有类似的依赖关系,否则您可能希望从 Expo 中退出。

如果为 iOS 开发,您可能还需要检查是否已安装所需的 pod。您可以使用以下方法执行此操作:

npx pod-install 从项目目录的根目录(可能与 package.json 相同的目录)

一切都失败了: rn -rf 节点模块 npm install && npx pod-install (如果使用Typescript也可以试试npx typesync)

如果为 Android 开发,请确保在 gradle 文件中添加必要的代码,可以粘贴到任何地方(可能在文档中)

【讨论】:

  • 我没有使用 Expo .....我正在使用 Android Studio 构建(尚未尝试在 IOS 上构建应用程序)。您指的是gradle文件上的哪些必要代码?我试过 [npm install react-native-crypto-js --save] 然后 [rn -rf node_modules] 然后 [npm install] .....仍然得到同样的错误。有趣的是,它在 Android Studio 中构建良好
  • 有时您只需将一两行代码复制并粘贴到类似 .gradle 文件中,我在使用本机模块时已经这样做了几次。通常此代码将包含在文档中。我相信你已经链接了你正在使用的文档,但我自己还没有检查过。
【解决方案2】:

这发生在我身上,很可能是在为我的项目安装新包时,我没有尝试安装 react-native-twitter-lite ,但我的一般做法是:

  • 尝试自己安装缺少的模块,在你的情况下,安装 Crypto
  • 删除node_modules并重新安装依赖,运行rm -rf node_modules && npm install
  • 运行你的项目npm start 然后npm run android && npm run ios

【讨论】:

  • 我试过 [npm install react-native-crypto-js --save] 然后 [rn -rf node_modules] 然后 [npm install] .....仍然得到同样的错误。有趣的是,它在 Android Studio 中构建良好
【解决方案3】:

问题可能是您的依赖项中缺少 cryptojs(未安装在您的应用中),但 react-native-twitter-lite 仍然需要它来运行以确保安全。你肯定有 twitter.js,但没有 crypto.js。 twitter-lite 使用 Cryptojs 来加密和加密数据。你可以选择使用 Nodejs 的 crypto 模块或 react-native 的内置 cryptojs。我总是选择后者以获得更原生的行为。为此,简单运行

npm install react-native-crypto-js --save.

第一次遇到这个问题this source帮助我理解了。

【讨论】:

  • 不幸的是,我在安装 react-native-crypto-js 后仍然遇到同样的错误。 Nodejs 的加密模块的 npm 命令是什么?也许我会试试
  • 我认为问题在于反应原生版本。要使其与 React Native 0.63 一起使用,您可能需要将 crypto-js 版本降级到 3.3 。至于另一个选项,node crypto 模块已经捆绑在 nodejs 中,因此无需安装它,并且仅在您想创建自己的自定义函数来加密和加密时有用。但事实并非如此,因此 react native cryptojs 是最合适的。你能检查应用程序的反应原生版本吗?你在用世博吗?使用 react-native cryptojs,你走在了正确的轨道上。
  • react-native-crypto-js 的版本是 6.9.0。当我尝试降级到 3.3.0 .....npm 告诉我包不存在。
  • 当它说“包不存在”时,我不知道是第一次安装仍然丢失,还是旧的 3.3 版本无法安装。如果是最新版本没有安装那就好了,安装3.3版本的正确方法是npm install crypto-js@3.3.0 --save。但如果是老版本不可用,那么你需要先卸载最新版本,然后重新安装特定版本的3.3,这是我使用的稳定版本。
  • 因为 twitter-lite 使用核心节点模块 crypto,我建议安装 rn-nodeify 来映射 react-native 和核心模块。另见this
猜你喜欢
  • 1970-01-01
  • 2016-07-24
  • 2019-08-09
  • 2019-07-06
  • 2017-06-06
  • 1970-01-01
  • 2019-08-16
  • 2022-12-12
  • 1970-01-01
相关资源
最近更新 更多