Требуется пакет Webpack - возвращает пустой объект?

Связанные с обновлением: как подготовить module.exports = к пачке веб-пакетов?


У меня есть Webpack простой module.exports = "asdfasdf" в foo.js

В узле server.js я имею var foo = require("./foo.js")

Когда я console.log(foo) Я получаю пустой объект {}

Что я делаю неправильно??

Мой конфиг веб-пакета:

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

2 ответа

Решение

Я думаю, что вам не хватает libraryTarget-настройка. Добавление libraryTarget: "commonjs2" в конфиге должен исправить проблему. Смотрите об этом в webpack-docs.

В моем случае у меня такая же проблема при использовании 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'

Вы можете использовать: https://github.com/59naga/babel-plugin-add-module-exports

ОБНОВИТЬ:

Авторы веб-пакета не рекомендуют использовать для этого плагин babel.

В 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>'
    },

Используйте случаи именования, как я показываю. Удачного кодирования ✌

Другие вопросы по тегам