Erfordert Modul unbekannt "crypto" im reagieren-native Umgebung
Schreibe ich eine einfache Twitter-app mit reagieren-native. Mit twit Modul um twitter-feeds und Streams. Unten ist der code, es funktioniert gut Knoten. Jedoch, wenn in meiner reagieren native app, sehen Fehler ", Wonach Modul unbekannt "crypto"". Abhängigkeit scheint myapp->twit->oauth->crypto (das ist ein Teil des node-v0.12.2). Irgendwelche Vorschläge um das arbeiten im inneren reagieren-native Umgebung?
var Twit = require('twit')
var T = new Twit({
consumer_key:''
, consumer_secret:''
, access_token:''
, access_token_secret:''
})
var filtered_tweets=[];
var error;
var isSuccess=false;
function getTweets(searchString){
T.get('search/tweets',{q:searchString, count:100}, getResponse);
}
function getResponse(err,data,response){
if(err) {
handleGetErr(err);
}
handleGetData(data.statuses);
}
function handleGetErr(err){
enter code here
error = err;
}
function handleGetData(data){
data.map(function(tweet){
var twit={
twit:tweet.id,
created_at:tweet.created_at,
text:tweet.text,
retweet_count:tweet.retweet_count,
favorite_count:tweet.favorite_count
};
filtered_tweets.push(twit);
});
console.log(filtered_tweets);
isSuccess=true;
}
getTweets("@sahaswaranamam");
module.exports = getTweets;
![befestigt][2]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
crypto
Modul ist ein built-in-Knoten-Modul; React Native JS läuft auf JavaScriptCore (wenn auf dem Gerät oder simulator) und auf Google Chrome selbst (bei Verwendung von Chrome-debugging), also Module, die abhängig von built-in Node.js Module, die nicht funktionieren. Sehen die JavaScript-Laufzeit-Abschnitt Reagieren die Einheimischen docs für mehr info.Ich bin mir nicht sicher, wie schwer es wäre die Integration in ein Reagieren Native app, aber browser-Modul bundlers wie Browserify haben oft browser-Versionen von core Node.js Module, wie diese für
crypto
.Reagieren Native packager verwendet Babel unter der Haube. Dies bedeutet, dass Sie verwenden können,
babel-plugin-rewrite-erfordern
Babel-plugin umschreiben allerrequire('crypto')
Aufruferequire('crypto-browserify')
, vorausgesetzt, dass die letztere ist installiert in Ihremnode_modules
.Januar 2016, können Sie
.babelrc
- Datei zu definieren optional die Konfiguration, also das wird echt einfach. Zunächst installieren Sie die Abhängigkeiten:Dann hinzufügen, plugins, config, um Ihre
.babelrc
Datei:Starten Sie die packager und das sollte es gewesen sein.
Dies ist der gleiche Ansatz, der ReactNativify verwendet, außer, dass wir hier verwenden
.babelrc
statt die Definition von benutzerdefinierten Transformator. WennReactNativify
geschrieben wurde, es wurde nicht unterstützt, also musste Sie gehen mit komplexer Lösung. Sehen diese Datei vonReactNativify
für die fast komplette Liste von Knoten polyfills.stream
Paket in dernode_modules
- Verzeichnis?otplib
. Hast du eine Möglichkeit finden, wie diese Fälle zu behandeln? Ich es geschafft, es zu hacken, mit rn-nodeify aber es ist super aglyIch hatte das gleiche Problem bei der Umsetzung der Twilio-Paket in meinem Reagieren, Native app und Reagieren Nativen brechen über die crypto-Abhängigkeit.
Als eine Arbeit um, ich landete einen separaten, stand-alone Node/Express-app zu handeln, wie mein server und kümmern sich um die Twilio Logik, die ich hatte. So entfernte ich alle Twilio-Logik aus meiner Reagieren Nativen app und zog Sie zu Knoten. Ich habe dann gerade angerufen, mein Express-Strecke in Reagieren Nativen mithilfe von fetch, die Auslöser für die Funktionalität, die ich wollte zu passieren, mit Twilio. Wenn Sie nicht vertraut sind mit fetch ist hier ein guter Ausgangspunkt
Die Bereitstellung von AJAX-Aufrufe mittels Fetch in Reagieren Nativen
Zusätzlich, hier ist meine Frage an die crypto-Abhängigkeit bricht mir das app:
twilio-reagieren-native-nicht-zu-beheben-Modul-Krypto -
Können Sie die
rn-nodeify
Modul zu erhaltencrypto
auf reagieren-native.Hinzufügen
rn-nodeify
zu IhremdevDependencies
impackage.json
:Fügen Sie den folgenden, um die
scripts
Teil der gleichen Datei:Sich bewusst sein, dass rn-nodeify ändern wird Ihr Paket.json.
Mehr Informationen finden Sie hier: https://www.npmjs.com/package/rn-nodeify
Wenn Sie
rn-nodeify
wie @emmby schlägt, dann können Siereagieren-native-crypto
. Anweisungen aus der README:Installieren
rn-nodeify
erstellen einershim.js
im Projekt-root-VerzeichnisAber
rn-nodeify
sagt auch:Mit ReactNativify erstellen Sie eine
rn-cli.config.js
und dann in einemtransformer.js
Sie ließ Babel zu verwandeln bundle-Abhängigkeiten mitbabel-plugin-rewrite-require
:(Hinweis: Sie können dies auch tun, ohne diese 2 js-Dateien direkt in
.babelrc
)(Note2: Obwohl ReactNativify ist der sauberere Weg, es ist immer noch die me-Probleme mit der Verdrahtung
crypto.getRandomValues
für die Produktion-Einsatz in RN. Sehen diese Frage)transformer.js
innerhalb vonrn-cli.config.js
können Sie exportierenextraNodeModules
- und override node-Modulen. Für weitere Informationen Lesen Sie in dieser Ausgabe auf ReactNativify s repo github.com/philikon/ReactNativify/issues/4