我使用webpack使用此配置打包几个文件。
const path = require('path');
const webpack = require('webpack');
const nodeExternals = require('webpack-node-externals');
module.exports = {
entry: ['./jstasklib/task.js', './jstasklib/worker.js'],
output: {
path: __dirname + '/dist',
filename: 'app.js',
library: 'jstasklib'
},
target: 'node',
externals: [nodeExternals()],
devtool: 'source-map',
module: {
loaders: [
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015'],
},
},
],
},
};
如果我然后启动节点终端并要求该文件,它只给我一个空对象:
node
var foo = require('./dist/app.js');
console.log(foo);
-> {}
但是,如果我在app.js底部抛出一个console.log(jstasklib)
并且运行node ./dist/app.js
我得到了这个输出,看起来它应该允许我至少导入前一个示例中的Worker:
{default: [Function: Worker]}
那是什么给出的?我的webpack配置错了吗?什么是正确的设置,以便能够从webpack生成的文件导入东西?
答案 0 :(得分:2)
也许您在app.js文件中使用导出默认值,默认情况下不会设置。尝试将输出libraryTarget设置为commonjs2
https://webpack.github.io/docs/configuration.html#output-librarytarget
output: {
path: __dirname + '/dist',
filename: 'app.js',
library: 'jstasklib',
libraryTarget: 'commonjs2'
},