2016-07-11 7 views
0

Ich arbeite an einem isomorphen Reaktionsprojekt und versuche, das Stripe Node SDK (vs. ihre REST API) innerhalb eines Redux-Moduls zu verwenden. Wenn Webpack das Projekt erstellt, erhalte ich den Fehler: Module not found: Error: Cannot resolve module 'child_process'. Ich weiß, dass dies ein Node-Modul ist, also kann ich es nicht im Browser verwenden (ich möchte nur, dass Stripe-API-Aufrufe auf der Serverseite entstehen), ich weiß einfach nicht, wie sichergestellt wird, dass das Stripe-Node-Modul nicht gepackt ist in die Datei app.js des Browsers.Verwenden der Knotenbibliothek auf isomorphem React/Redux/Webpack

Während ich das Stripe-Modul im redux-Modul auf der JSX-Seite importiere, importiere ich nur die IStripe-Schnittstelle aus dem Stripe-Redux-Modul aus dem stripe.model und dem getPlansList-Dispatcher.

Also meine Frage ist, wie verwendet man Knoten-only-Module in einem isomorphen React-Projekt? Muss ich einen separaten Server-Only-Node-Prozess ausführen, der meine Stripe-Aufrufe verarbeitet? Oder ist es möglich, diese Funktionalität in meiner isomorphen App zu enthalten?

Danke!

+0

Nur etwas Forschung. Es scheint, als wäre es eine gute Idee, einen API-Proxy zu implementieren, den sowohl der Server als auch der Client verwenden können. Auf diese Weise kann ich meine privaten API-Anmeldeinformationen auf der Serverseite schützen. Etwas wie dieses: https://github.com/toheman/topheman-apis-proxy – omencat

Antwort

0

Betrachten Sie the issue, Sie sollten stripe-node im Browser nicht ausführen.

Sie können Setup alias in webpack config:

{ 
    resolve: { 
     alias: { 
      'stripe': './src/stripe-browser' 
     } 
    } 
} 

Wenn Sie brauchen, um Streifen nicht in Browser zu verwenden, können Sie nur eine leere Datei stripe-browser als Stub für API erstellen.

Wenn Sie API im Browser verwenden, müssen Sie einen Adapter zu Stripe.js clientseitige Bibliothek erstellen.

+0

Ich möchte keine Drittanbieter-APIs aus dem Browser verwenden. Ich möchte diese Anrufe nur von der Serverseite aus machen. Von dem, was ich in einigen isomorphen React-Boilerplate-Templates gelesen und gesehen habe, gibt es einen API-Proxy, den er verwendet hat. Aber ich bin gespannt, was ein leerer Stripe-Browser-Stub macht. Funktioniert das auf der Serverseite und nicht auf der Browserseite? – omencat

+0

Soweit Sie 'alias' in' webpack' config setzen, betrifft dies nur den Webpack-Build. Damit Sie Ihren Code mit 'node' ausführen können, würde es wie erwartet funktionieren. –

Verwandte Themen