Update -- related: How to prepend module.exports =
to webpack bundle?
I have webpack compile a simple module.exports = "asdfasdf"
to foo.js
In a node server.js
I have var foo = require("./foo.js")
When I console.log(foo)
I get an empty object {}
What am I doing wrong??
My 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"
};
I think you are missing the libraryTarget
-setting. Adding libraryTarget: "commonjs2"
to the config should fix the issue. See the webpack-docs about it.
In my case I have same problem when using babel-loader with Babel 6. Even when I set
"libraryTarget": "commonjs2"
I have results:
const foo = require('some-module');
console.log(foo) // is {}
const bar = require('some-module').default;
console.log(bar) // is default export of 'some-module'
If you want:
const foo = require('some-module');
console.log(foo) // is default export of 'some-module'
You can use: babel-plugin-add-module-exports
UPDATE:
The authors of webpack do not recommend using the babel-plugin for this.
Webpack 3 has option output.libraryExport (it is don`t have detailed docs now)
I tried like this
output.libraryExport: 'default'
and it resovled the problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With