webpack4打包node环境导出class时再引用时报错?

//导出class test.js
class TEST{
constructor() {}
init() {
console.log("sb");
}
}
module.exports = TEST;

//使用TEST
const TEST= require("./test.js");
let sb=new TEST();

webpack4打包TEST.js后再引入,报 TEST is not a constructor.

这是什么原因?webpack打包test.js文件后就用不了,没打包时就可以用。

参考GPT和自己的思路:

这个问题可能是因为webpack4默认使用严格模式(strict mode)来打包代码,而严格模式下会禁止隐式的全局变量声明。在你的代码中,你使用了与导出的类名Test完全相同的变量名Test来接收引入的类,这可能会产生冲突。

为了确保打包后的代码能够正常使用,你可以尝试将你的代码改为以下形式:

//导出class test.js
class Test{
  constructor() {}
  init() {
    console.log("sb");
  }
}
module.exports = Test;

//使用Test
const TestClass = require("./test.js");
let sb = new TestClass();

将接收类的变量名改为不同的名称可以避免变量名的冲突。