锋清杨 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 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制