web-dev-qa-db-ja.com

Twilio Reactネイティブ-モジュール暗号を解決できません

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パッケージを直接インストールしようとしましたが、それも機能しないようです。

誰かがこの問題を経験し、それを解決する方法がありますか?

9
Onaracs

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

直接的な解決策ではありませんが、Twilio呼び出しを行うための別のExpressサーバーを作成し、そのルートをReactネイティブアプリ内から呼び出すことで、この問題の回避策を作成しました。

3
Onaracs

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

rn-nodeifydevDependenciespackage.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

16
emmby

私はあなたが見てみることをお勧めします そこに 、誰にとっても修正されていないように見えるので、たくさんの解決策が与えられています。

私はあなたが以下を試すことを提案します(リンクからの問題から取られました):

  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

しかし、その完全性の問題をチェックしてください、多くは彼らのために働いた他の修正を見つけました。

3
G. Hamaide

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からのこのファイル を参照してください。

2
skozin