2016-05-20 7 views
2

Ich baue ein Projekt mit Electron, und mit Webpack, um die (Angular 2) Render-Prozess-App zu bauen.Knoten verwenden mit Electron und Webpack verwenden

In dieser App muss ich dynamisch require einige Dateien zur Laufzeit, die nicht zum Build-Time existieren. Der Code sieht etwa so aus:

require("fs").readdirSync(this.path).forEach(file => { 
    let myModule = require(path.join(this.path, file)); 
    // do stuff with myModule 
}); 

Das Problem ist, dass der Webpack Compiler den require() Aufruf an seinen eigenen __webpack_require__() und zur Laufzeit umwandeln, es in seinem eigenen internen Modulregister für das dynamische „MyModule aussehen "Datei, und natürlich wird es nicht finden.

Ich habe versucht, mit der Option "Externals" config, aber da dies eine dynamische erfordert, scheint es nicht von "externals" verarbeitet werden.

Jeder andere hatte Erfolg bei der Lösung dieses Problems?

+0

nicht 100% sicher - haben Sie versucht, 'global.require':

Der Originalartikel für mehr Kontext ist hier zu finden? – jantimon

+0

@jantimon Ja, das macht den Trick! Vielen Dank. –

Antwort

2

Wie in einem Kommentar auf meine Frage nach @jantimon vorgeschlagen, ist die Lösung global.require zu verwenden:

require("fs").readdirSync(this.path).forEach(file => { 
    let myModule = global.require(path.join(this.path, file)); 
    // do stuff with myModule 
}); 
0

Ich kam in this Artikel und aus einem anderen Grund der Autor braucht Knotenmodule, die durch nicht transpiled wird Webpaket. Er schlug vor, in der Datei webpack.config.js

new webpack.IgnorePlugin(new RegExp("^(fs|ipc)$")) 

zu verwenden. Dies sollte verhindern, dass das Modul fs und ipc transpiliert wird, so dass es im Code verwendet werden kann (erforderlich).

Ich bin nicht wirklich sicher, ob dies auch Ihr Problem trifft, aber es könnte helfen. https://medium.com/@Agro/developing-desktop-applications-with-electron-and-react-40d117d97564#.927tyjq0y