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
パッケージを直接インストールしようとしましたが、それも機能しないようです。
誰かがこの問題を経験し、それを解決する方法がありますか?
React Nativeは、依存関係に基づいて特定のパッケージを受け入れないようです。Twilioはその1つです。
直接的な解決策ではありませんが、Twilio呼び出しを行うための別のExpressサーバーを作成し、そのルートをReactネイティブアプリ内から呼び出すことで、この問題の回避策を作成しました。
rn-nodeify
モジュールを使用して、react-nativeでcrypto
を取得できます。
rn-nodeify
のdevDependencies
にpackage.json
を追加します。
"devDependencies": {
"rn-nodeify": "^6.0.1"
}
同じファイルのscripts
セクションに以下を追加します。
"scripts": {
…
"postinstall": "node_modules/.bin/rn-nodeify --install crypto --hack"
}
Rn-nodeifyがpackage.jsonを変更することに注意してください。
詳細については、こちらをご覧ください: https://www.npmjs.com/package/rn-nodeify
私はあなたが見てみることをお勧めします そこに 、誰にとっても修正されていないように見えるので、たくさんの解決策が与えられています。
私はあなたが以下を試すことを提案します(リンクからの問題から取られました):
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パッケージャーは、内部でBabelを使用します。これは、 _babel-plugin-rewrite-require
_ Babelプラグイン を使用して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 が使用するのと同じアプローチですが、ここではカスタムトランスフォーマーを定義する代わりに_.babelrc
_を使用する点が異なります。 ReactNativify
が作成されたときはサポートされていなかったため、より複雑なソリューションを使用する必要がありました。ノードポリフィルのほぼ完全なリストについては、 ReactNativify
からのこのファイル を参照してください。