Ich versuche, für eine Reaktion/Redux App-Tests zu schreiben, und wir haben eine Reihe von Webworker, die derzeit über require('worker-loader?inline!downloadTrackWorker')
webpack 2 aussetzen Webworker als globale
importiert Ich habe zu Figur versucht, im Kreis heraus, wie man diesen Code trennt, damit ich Tests in node.js ausführen kann, ohne Probleme beim Laden des Webworker zu haben.
Eine Lösung, die ich gefunden habe, war, den Webworker global in meinem Webpack verfügbar zu machen, was bedeuten würde, dass ich in meinen Tests einen Stub oder einen Mock definieren könnte.
In meinem webpack Config, ich habe hinzugefügt
module: {
loaders: [...],
rules: [{
test: require.resolve(APP_DIR + '/helpers/downloadTrackWorkerLoader'),
loader: 'expose-loader',
options: 'DownloadTrackWorker'
}]
}
mein trackWorkerLoader ist einfach
const DownloadTrackWorker = require('worker-loader?inline!./downloadTrackWorker.js');
module.export = DownloadTrackWorker;
Ich habe auch versucht, die oben ohne inline
, aber kein Glück.
Ich habe zwei Probleme.
- , wenn ich für
DownloadTrackWorker
in meiner Konsole sehen, es ist nicht definiert mit meinem aktualisiert webpack.config, erhalte ich eine Fehlermeldung, dass webpack nicht
may need appropriate loader
beiReactDOM.render( <Provider store={store}> <Player /> </Provider>, document.getElementById('root') );
Irgendwelche Vorschläge, was ich falsch mache? Es scheint mir, dass die Probleme, die ich sehe, verwandt sind.
Webpack stellt niemals global dar. Damit du 'DownloadTrackWorker' immer undefiniert bekommst, musst du hinzufügen 'importiere DownloadTrackWorker von" path-to/trackWorkerLoader "' in der Datei, in der du es verwendest. –
@ApoorvJoshi missverstehe ich das? https://github.com/webpack-contrib/expose-loader Ich benutze den Expose Loader. Das sagt, es fügt dem globalen Umfang hinzu. Daher sollte ich das nicht mit einschließen müssen. – pedalpete