更新 - 相关:How to prepend module.exports =
to webpack bundle?
我让webpack编译一个简单的module.exports = "asdfasdf"
到foo.js
在节点server.js
中,我有var foo = require("./foo.js")
当我console.log(foo)
时,我得到一个空对象{}
我做错了什么?
我的webpack配置:
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 :(得分:12)
我认为你错过了libraryTarget
- 设置。将libraryTarget: "commonjs2"
添加到配置应该可以解决问题。 See the webpack-docs about it
答案 1 :(得分:6)
在我的情况下,在Babel 6中使用 babel-loader 时遇到同样的问题。 即使我设置
"libraryTarget": "commonjs2"
我有结果:
const foo = require('some-module');
console.log(foo) // is {}
const bar = require('some-module').default;
console.log(bar) // is default export of 'some-module'
如果你想:
const foo = require('some-module');
console.log(foo) // is default export of 'some-module'
您可以使用: babel-plugin-add-module-exports
<强>更新强>
webpack的作者不建议使用 babel-plugin 。
Webpack 3有output.libraryExport选项(现在没有详细的文档)
我试过这个
output.libraryExport: 'default'
它解决了问题。
答案 2 :(得分:0)
我遇到了同样的问题,因为开玩笑我需要@babel插件。我用babel-6编写了整个项目。现在,我在@mbraint的建议下再次尝试了此操作。而且有效!因此,对于webpack输出属性,您需要如下所示:
output: {
path: path.join(__dirname, 'dist'),
filename: '<output-file-name>.js',
libraryTarget: 'commonjs2',
libraryExport: 'default',
library: '<ProjectName>'
},
使用我显示的命名用例。快乐编码✌