需要 Webpack 包——returns 空对象?

Require Webpack bundle -- returns empty object?

更新 -- 相关:


我让 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"
};

我认为您缺少 libraryTarget 设置。将 libraryTarget: "commonjs2" 添加到配置中应该可以解决问题。 See the webpack-docs about it.

在我的例子中,我在使用 babel-loader 和 Babel 6 时遇到了同样的问题。 即使我设置

"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'

它解决了问题。

我遇到了同样的问题,因为为了开玩笑,我需要@babel 插件。我用 babel-6 编写了整个项目。现在我在@mbraint 的建议下再次尝试。它奏效了!所以对于 webpack 输出 属性 你需要像下面这样的东西:

    output: {
        path: path.join(__dirname, 'dist'),
        filename: '<output-file-name>.js',
        libraryTarget: 'commonjs2',
        libraryExport: 'default',
        library: '<ProjectName>'
    },

使用我展示的命名案例。快乐编码✌