我试图制造一些不和谐的机器人,而试图使用在另一个脚本中创建的类却感到沮丧。有问题的脚本如下所示:

// utils.js

class BotUtils {
   constructor(param1, param2, ...) {
      this.param1 = param1;
      this.param2 = param2;
      ...
      }

    someMethod() {
    doSomething;
    }
}

module.exports = {BotUtils};


在我的机器人脚本中,我有:

// bot.js
const botUtils = require('./BotUtils');

let utils = new BotUtils(param1, param2, ...);


我得到TypeError: BotUtils is not a constructor

我也尝试过使用new,但是它不起作用。我需要使用特定的参数来构造类。正确的方法是什么?

最佳答案

您正在从模块中导出具有类BotUtils的对象作为属性。要创建该类的实例,您需要引用该属性,即

let utils = new botUtils.BotUtils(param1, param2, ...);


如果只想导出BotUtils类,则可以通过删除方括号来实现

module.exports = BotUtils;


然后,当您需要模块时,将返回该类,这与您的原始代码更接近,但稍有调整

const BotUtils = require('./utils');


另外,如果您使用的是ES modules,则使用命名导出会更容易

import { BotUtils } from './utils'

10-06 15:21