锋清杨 2020-04-18 17:15 采纳率: 0%
浏览 196

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文件后就用不了,没打包时就可以用。

  • 写回答

1条回答

  • lshen01 2023-03-16 22:09
    关注

    参考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();
    

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

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog