Twilio React Native - 无法解析模块加密
Twilio React Native - Unable to resolve module crypto
我正在努力将 twilio
包实施到我的 react-native 项目中,当我在我的文件中需要它时,项目不会加载,我看到以下错误:
Unable to resolve module crypto from /Users/[myname]/Documents/Projects/React-Native/[app-name]/node_modules/twilio/lib/webhooks.js: Unable to find this module in its module map or any of the node_modules directories under /Users/node_modules/crypto and its parent directories
我试过直接安装 crypto
软件包,但似乎也不起作用。
有没有人遇到过这个问题,并且有办法解决它?
我建议你看看there,给出了很多解决方案,因为none似乎适合所有人。
我建议您尝试以下方法(摘自 link 的问题):
rm -rf node_modules
rm -fr $TMPDIR/react-*
watchman watch-del-all
npm cache clean && npm install
npm start from ./node_modules/react-native
但检查问题的完整性,许多人发现了其他适用于他们的修复程序。
似乎 React Native 不接受基于依赖项的某些包,Twilio 就是其中之一。
虽然不是直接的解决方案,但我创建了一个解决此问题的方法,方法是创建一个单独的 Express 服务器来进行 Twilio 调用,并从我的 React Native 应用程序中调用该路由。
您可以使用 rn-nodeify
模块在 react-native 上获得 crypto
。
将 rn-nodeify
添加到 package.json
中的 devDependencies
:
"devDependencies": {
"rn-nodeify": "^6.0.1"
}
将以下内容添加到同一文件的 scripts
部分:
"scripts": {
…
"postinstall": "node_modules/.bin/rn-nodeify --install crypto --hack"
}
请注意,rn-nodeify 会修改您的 package.json。
React Native 打包器在后台使用 Babel。这意味着您可以使用 babel-plugin-rewrite-require
Babel plugin 将所有 require('crypto')
调用重写为 require('crypto-browserify')
,假设后者已安装在您的 node_modules
.
中
自 2016 年 1 月起,您可以使用 .babelrc
文件来定义可选配置,因此这变得非常容易。首先,安装依赖项:
npm install --save crypto-browserify
npm install --save-dev babel-plugin-rewrite-require
然后将插件配置添加到您的 .babelrc
文件中:
{
"presets": ["react-native"],
"plugins": [
["babel-plugin-rewrite-require", {
aliases: {
crypto: 'crypto-browserify'
}
}]
]
}
重新启动打包程序,应该就可以了。
这与 ReactNativify uses, except that here we use .babelrc
instead of defining custom transformer. When ReactNativify
was written, it was not supported, so they had to go with more complex solution. See this file from ReactNativify
几乎完整的节点 polyfill 列表的方法相同。
我正在努力将 twilio
包实施到我的 react-native 项目中,当我在我的文件中需要它时,项目不会加载,我看到以下错误:
Unable to resolve module crypto from /Users/[myname]/Documents/Projects/React-Native/[app-name]/node_modules/twilio/lib/webhooks.js: Unable to find this module in its module map or any of the node_modules directories under /Users/node_modules/crypto and its parent directories
我试过直接安装 crypto
软件包,但似乎也不起作用。
有没有人遇到过这个问题,并且有办法解决它?
我建议你看看there,给出了很多解决方案,因为none似乎适合所有人。
我建议您尝试以下方法(摘自 link 的问题):
rm -rf node_modules
rm -fr $TMPDIR/react-*
watchman watch-del-all
npm cache clean && npm install
npm start from ./node_modules/react-native
但检查问题的完整性,许多人发现了其他适用于他们的修复程序。
似乎 React Native 不接受基于依赖项的某些包,Twilio 就是其中之一。
虽然不是直接的解决方案,但我创建了一个解决此问题的方法,方法是创建一个单独的 Express 服务器来进行 Twilio 调用,并从我的 React Native 应用程序中调用该路由。
您可以使用 rn-nodeify
模块在 react-native 上获得 crypto
。
将 rn-nodeify
添加到 package.json
中的 devDependencies
:
"devDependencies": {
"rn-nodeify": "^6.0.1"
}
将以下内容添加到同一文件的 scripts
部分:
"scripts": {
…
"postinstall": "node_modules/.bin/rn-nodeify --install crypto --hack"
}
请注意,rn-nodeify 会修改您的 package.json。
React Native 打包器在后台使用 Babel。这意味着您可以使用 babel-plugin-rewrite-require
Babel plugin 将所有 require('crypto')
调用重写为 require('crypto-browserify')
,假设后者已安装在您的 node_modules
.
自 2016 年 1 月起,您可以使用 .babelrc
文件来定义可选配置,因此这变得非常容易。首先,安装依赖项:
npm install --save crypto-browserify
npm install --save-dev babel-plugin-rewrite-require
然后将插件配置添加到您的 .babelrc
文件中:
{
"presets": ["react-native"],
"plugins": [
["babel-plugin-rewrite-require", {
aliases: {
crypto: 'crypto-browserify'
}
}]
]
}
重新启动打包程序,应该就可以了。
这与 ReactNativify uses, except that here we use .babelrc
instead of defining custom transformer. When ReactNativify
was written, it was not supported, so they had to go with more complex solution. See this file from ReactNativify
几乎完整的节点 polyfill 列表的方法相同。