2016-07-10 13 views
6

Update - bezogen werden: How to prepend module.exports = to webpack bundle?Webpack-Paket erforderlich - gibt leeres Objekt zurück?


Ich habe webpack In einem Knoten eine einfache module.exports = "asdfasdf"-foo.js

kompilieren server.js I var foo = require("./foo.js")

haben Als ich console.log(foo) ich ein leeres Objekt {}

erhalten

Was mache ich falsch ??

Meine webpack config:

module.exports = { 
    entry: "./test.js", 
    output: { 
     filename: "./foo.js" 
    }, 
    target: "node", 
    module: { 
     loaders: [ 
      { 
       exclude: /(node_modules|bower_components)/, 
       loader: "babel?presets[]=react,presets[]=es2015" 
      } 
     ] 
    }, 
    devtool: "#source-map" 
}; 
+0

Könnten Sie den Inhalt der kompilierten 'foo.js' veröffentlichen? – TN1ck

Antwort

8

Ich glaube, Sie die libraryTarget -Einstellung fehlen. Hinzufügen von libraryTarget: "commonjs2" zur Config sollte das Problem beheben. See the webpack-docs about it.

3

In meinem Fall habe ich gleiche Problem bei der Verwendung von babel-loader mit Babel 6. Selbst wenn ich gesetzt

"libraryTarget": "commonjs2" 

Ich habe Ergebnisse:

const foo = require('some-module'); 
console.log(foo) // is {} 

const bar = require('some-module').default; 
console.log(bar) // is default export of 'some-module' 

Wenn Sie wollen:

const foo = require('some-module'); 
console.log(foo) // is default export of 'some-module' 

Sie können verwenden: babel-plugin-add-module-exports

UPDATE:

Die Autoren von webpack nicht mit der babel-Plugin für diesen empfehlen.

Webpack 3 hat Option output.libraryExport (es `t ist haben detaillierte Dokumente jetzt)

Ich habe versucht, wie diese

output.libraryExport: 'default' 

und es resovled das Problem.

Verwandte Themen