无法导入或需要webpack生成的文件?

时间:2016-05-16 14:01:03

标签: javascript node.js webpack

我使用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生成的文件导入东西?

1 个答案:

答案 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'
},