使用 webpack 转译时,常见的 js 默认导出不起作用

Common js default export doesn't work when transpiling with webpack

我正在使用 webpack 基本配置,当我使用从普通 js 导出的基本配置时,它不起作用。

webpack.config.js

var commonJsConfig = {
  target: "node",
  mode: "production",
  output: {
    filename: "hello.node.js",
    libraryTarget: "commonjs",
  },
};

module.exports = commonJsConfig;

当我这样做时:

src/index.js文件

function hello() {
  console.log("hello");
}

module.exports = hello;

test.js

const hello = require("./dist/hello.node");
console.log(hello);
hello();

函数 hello 被打印成一个空对象,但是如果我这样做:

src/index.js文件

function hello() {
  console.log("hello");
}

module.exports = { hello };

test.js

const hello = require("./dist/hello.node").hello;
console.log(hello);
hello();

效果很好

我想知道为什么会这样,我不明白为什么 module.exports = hello 不起作用

对我来说修复它的只是将库目标更改为 commonjs-module,如下所示:

var commonJsConfig = {
  target: "node",
  mode: "production",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "basic-indexer.node.js",
    libraryTarget: "commonjs-module",
  },
};

module.exports = commonJsConfig;