Требуется пакет 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>'
},
Используйте случаи именования, как я показываю. Удачного кодирования ✌