Webpack-Aliase im Node JS-Servercode

9

Ich baue eine isomorphe React / React-Router / Redux / Webpack-Anwendung und versuche serverseitig zu rendern.

Mein Verzeichnis sieht folgendermaßen aus:

%Vor%

In meiner Webpack-Konfiguration habe ich Aliase für alle Ordner im Client eingerichtet:

%Vor%

Damit kann ich innerhalb des Codes, der von webpack gebündelt wird, Folgendes tun:

%Vor%

und dieser Import wird von Webpack gelöst.

Nun muss ich in meinem Server-Code einige meiner Client-Dateien wie routes/index.js importieren, um das Rendering durchzuführen. Das Problem, auf das ich stoße, wenn ich meine routes-Datei importiere, benutzt einen Webpack-Alias ​​zu einer anderen Datei, sagen wir components oder containers , also kann der Knoten js required das System nicht auflösen.

Wie repariere ich so etwas? Ich habe diese Frage angeschaut und es geht darum, im Wesentlichen dieselben Aliase einzurichten existieren im Webpack mit Mock-Require . Aber dann wird das Problem, dass meine routes-Datei alle meine Komponenten importiert, die dann alle Dinge wie Stylesheets, Bilder usw. importieren. Sollte ich dann etwas wie webpack-isomorphe-tools ?

Die Anleitungen, die ich mir angeschaut habe ( this zum Beispiel) sind alle großartig darin zu zeigen, wie serverseitiges Rendering durchgeführt wird, aber keiner von ihnen redet wirklich darüber, wie alle Anforderungen und was nicht gelöst werden sollen.

    
barndog 08.01.2016, 18:26
quelle

4 Antworten

2

Nachdem ich mich zwei Tage mit diesem Problem herumgeschlagen hatte, entschied ich mich für babel-plugin-webpack-alias. Was Sie tun müssen , um Pfade damit aufzulösen, ist:

  1. $ npm install --save-dev babel-plugin-webpack-alias
  2. Fügen Sie das Plugin zu Ihrer .babelrc
  3. hinzu
  4. Fügen Sie die Aliase zu Ihrer webpack.config hinzu (stellen Sie sicher, dass Sie path.join() verwenden)
  5. Lesen Sie diesen Beitrag , wenn Probleme beim Laden von Stilen auftreten

Die andere Option, die ich ausprobiert habe, war universal-webpack , aber ich fand es etwas umständlich. Wenn Sie ungefähr sehen möchten, wie die gesamte serverseitige Ladefunktion funktioniert, können Sie dieses Video ansehen.

    
Vlady Veselinov 07.10.2016 02:54
quelle
1

Versuchen Sie, NODE_PATH zu verwenden. Der Knoten sucht bei Requests immer nach einem Modul in diesem Pfad. Es erlaubt Ihnen, Ihre relativen Pfade wie gewünscht kurz zu machen.

%Vor%

Weitere Informationen finden Sie in den Node.js-Dokumenten .

P.S. Dieses Ding ist sehr empfindlich, also benutze es vorsichtig. Jetzt hängt dein Code eng von der Umgebung ab und kann irgendwo brechen.

    
just-boris 10.01.2016 11:50
quelle
1

Wenn Sie sie wirklich wollen, führen Sie Ihren Server-Side-Code durch babel und verwenden Sie dieses Plugin: Ссылка Sie können dasselbe wie webpack machen.

Bearbeiten: Das funktioniert viel besser: Ссылка es erlaubt mehrere Wege

    
zackify 08.01.2016 22:45
quelle
0

Wenn Sie webpack-isomorphe-tools verwenden, wird Ihre Webpack-Konfiguration für Ihre Server-Seite berücksichtigt, wodurch alle Ihre Aliase funktionieren.

Ссылка

    
Andrew Rasmussen 13.12.2016 19:36
quelle

Tags und Links