2016-04-05 6 views
6

Ich arbeite an der Umsetzung des twilio Paket in mein reagieren-native Projekt zu lösen, und wenn ich benötige es in meiner Datei das Projekt wird nicht Last und ich sehe den folgenden Fehler:Twilio Reagieren Native - Unable Modul Krypto

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

ich habe versucht, direkt das crypto-Paket installieren und das scheint nicht zu funktionieren.

Hat jemand dieses Problem erlebt und kann es lösen?

Antwort

3

Es scheint, dass React Native bestimmte Pakete aufgrund ihrer Abhängigkeiten nicht akzeptiert, wobei Twilio einer davon ist.

Obwohl keine direkte Lösung, habe ich eine Arbeit um dieses Problem erstellt, indem Sie einen separaten Express-Server erstellen, um den Twilio-Anruf zu tätigen, und diese Route innerhalb meiner React Native App aufrufen.

2

Ich schlage vor, Sie haben einen Blick there, viele Lösungen werden gegeben, weil keine für jeden zu reparieren scheinen.

Ich schlage vor, Sie versuchen, die folgenden (aus der Ausgabe von der Verbindung genommen):

  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

Aber schauen Sie sich das Problem in seiner Ganzheitlichkeit an, viele fanden andere Korrekturen, die für sie funktionierten.

+0

Danke für diese Vorschläge! – Onaracs

10

Sie können das Modul rn-nodeify verwenden, um crypto on reactive native zu erhalten.

hinzufügen rn-nodeify zu Ihrem devDependencies in package.json:

"devDependencies": { 
    "rn-nodeify": "^6.0.1" 
} 

folgenden Unterlagen an den scripts Abschnitt der gleichen Datei hinzufügen:

"scripts": { 
    … 
    "postinstall": "node_modules/.bin/rn-nodeify --install crypto --hack" 
} 

Beachten Sie, dass rn-nodeify Ihre package.json ändern wird .

Weitere Informationen finden Sie hier: https://www.npmjs.com/package/rn-nodeify

+0

Stellen Sie sicher, dass Sie auch die Quelle dieses Hacks gelesen haben -> Iirc, das macht den Rng ziemlich unsicher, also müssen Sie damit einverstanden sein. – aegbert

+0

Für eine sauberere Alternative zu rn-nodify, nämlich ReactNativify, siehe folgende Antwort: [Erfordert unbekanntes Modul "crypto" in reaktiver nativer Umgebung] (https://stackoverflow.com/a/45304528/8295283) –

0

Reagieren Mutter Packager verwendet Babel unter der Haube. Das bedeutet, dass Sie babel-plugin-rewrite-require Babel plugin verwenden können, um alle require('crypto') Aufrufe an require('crypto-browserify') umzuschreiben, vorausgesetzt, dass letzteres in Ihrem node_modules installiert ist.

Ab Januar 2016 können Sie die Datei .babelrc verwenden, um die optionale Konfiguration zu definieren, damit dies wirklich einfach wird.Installieren Sie zuerst die Abhängigkeiten:

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

Dann Plugins legen zum .babelrc Datei config:

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

Starten Sie den Verpacker und das sollte es sein.

Dies ist derselbe Ansatz, den ReactNativify verwendet, außer dass wir hier .babelrc anstelle des benutzerdefinierten Transformators verwenden. Als ReactNativify geschrieben wurde, wurde es nicht unterstützt, also mussten sie mit komplexeren Lösungen gehen. Eine fast vollständige Liste der Knoten-Polyfüllungen finden Sie unter this file from ReactNativify.