2016-04-05 20 views
6

私は反応ネイティブプロジェクトにtwilioパッケージを実装しようとしています。私のファイルに必要なときにプロジェクトが読み込まれず、次のエラーが表示されます: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パッケージをインストールしようとしたと、それはどちらか動作するようには思えません。

誰もこの問題を経験しており解決方法がありますか?

答えて

3

React Nativeは依存関係に基づいて特定のパッケージを受け付けていないようですが、Twilioはこれらのうちの1つです。

直接的な解決策ではありませんが、Twilioコールを作成し、そのルートを自分のReact Nativeアプリから呼び出すために、別のExpressサーバーを作成することでこの問題を回避する作業を作成しました。

2

thereのように見えることをお勧めします。解決策はたくさんあります。誰も修正できないようだからです。

私はあなたが(リンクから問題から取られた)次のことを試してくださいお勧め:

  1. rm -rf node_modules
  2. rm -fr $TMPDIR/react-*
  3. watchman watch-del-all
  4. npm cache clean && npm install
  5. npm start from ./node_modules/react-native

しかし、その統合性の問題をチェックしてください。

+0

これらの提案に感謝します! – Onaracs

10

rn-nodeifyモジュールを使用すると、react-nativeでcryptoを取得できます。

package.jsonでのごdevDependenciesrn-nodeifyを追加します。

"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

+0

あなたはこのハックのソースも読んでください - > Iircそれはかなり安全でないので、あなたはそれで大丈夫でなければなりません。 – aegbert

+0

rn-nodeifyの代わりにReactNativifyを使用する場合は、次の回答を参照してください。[反応ネイティブ環境で未知のモジュール "crypto"を要求する](https://stackoverflow.com/a/45304528/8295283) –

0

ネイティブパッケージャは、ボンネットの下にバベルを使用し反応します。これは、babel-plugin-rewrite-require Babel pluginを使用してrequire('crypto')の呼び出しをrequire('crypto-browserify')に書き換えることができ、後者がnode_modulesにインストールされていることを前提としています。

2016年1月現在、.babelrcファイルを使用してオプションの設定を定義できるため、これは簡単になります。まず、依存関係をインストールします。

{ 
    "presets": ["react-native"], 
    "plugins": [ 
    ["babel-plugin-rewrite-require", { 
     aliases: { 
     crypto: 'crypto-browserify' 
     } 
    }] 
    ] 
} 

再起動パッケージャをして、それはそれでなければなりません:

npm install --save crypto-browserify 
npm install --save-dev babel-plugin-rewrite-require 

は、その後、あなたの.babelrcファイルへのプラグインの設定を追加します。

ReactNativifyと同じアプローチですが、ここではカスタムトランスフォーマーを定義する代わりに.babelrcを使用します。 ReactNativifyが書かれたとき、それはサポートされていなかったので、もっと複雑な解決策をとらなければならなかった。ノードのポリフィルのほぼすべてのリストについては、this file from ReactNativifyを参照してください。

関連する問題