需要Webpack bundle - 返回空对象?

nea*_*sic 12 commonjs webpack

更新 - 相关:如何module.exports =预置到webpack包?


我有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"
};
Run Code Online (Sandbox Code Playgroud)

TN1*_*1ck 13

我想你错过了libraryTarget- 设置.添加libraryTarget: "commonjs2"到配置应解决问题.请参阅webpack-docs.


mbr*_*int 7

在我的情况下,当使用babel-loader与Babel 6时我也有同样的问题.即使我设置了

"libraryTarget": "commonjs2"
Run Code Online (Sandbox Code Playgroud)

我有结果:

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

const bar = require('some-module').default;
console.log(bar) // is default export of 'some-module'
Run Code Online (Sandbox Code Playgroud)

如果你想:

const foo = require('some-module');
console.log(foo) // is default export of 'some-module'
Run Code Online (Sandbox Code Playgroud)

您可以使用: babel-plugin-add-module-exports

更新:

webpack的作者不建议使用babel-plugin.

Webpack 3有选项output.libraryExport(它现在没有详细的文档)

我试过这样的

output.libraryExport: 'default'
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题.