Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Node.js中构造导入的类?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在Node.js中构造导入的类?

Javascript 如何在Node.js中构造导入的类?,javascript,node.js,Javascript,Node.js,我试图制作一些不和谐的机器人,但我在尝试使用我在另一个脚本中创建的类时感到沮丧。所讨论的脚本如下所示: //utils.js 类BotUtils{ 构造函数(参数1,参数2,…){ this.param1=param1; this.param2=param2; ... } someMethod(){ 剂量测定法; } } module.exports={BotUtils}; 在我的机器人脚本中,我有: //bot.js const botUtils=require('./botUtils');

我试图制作一些不和谐的机器人,但我在尝试使用我在另一个脚本中创建的类时感到沮丧。所讨论的脚本如下所示:

//utils.js
类BotUtils{
构造函数(参数1,参数2,…){
this.param1=param1;
this.param2=param2;
...
}
someMethod(){
剂量测定法;
}
}
module.exports={BotUtils};
在我的机器人脚本中,我有:

//bot.js
const botUtils=require('./botUtils');
设utils=新的BotUtils(param1,param2,…);
我得到
TypeError:BotUtils不是构造函数

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

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

let utils = new botUtils.BotUtils(param1, param2, ...);
如果只想导出
BotUtils
类,可以通过删除括号来实现

module.exports = BotUtils;
然后,当您需要该模块时,该类就是返回的类,这更接近于您的原始代码,但有一个小的调整

const BotUtils = require('./utils');
此外,如果您使用的是命名导出,那么使用命名导出会容易得多

import { BotUtils } from './utils'
您正在将类为
BotUtils
的对象作为属性从模块中导出。要创建类的实例,需要引用属性,即

let utils = new botUtils.BotUtils(param1, param2, ...);
如果只想导出
BotUtils
类,可以通过删除括号来实现

module.exports = BotUtils;
然后,当您需要该模块时,该类就是返回的类,这更接近于您的原始代码,但有一个小的调整

const BotUtils = require('./utils');
此外,如果您使用的是命名导出,那么使用命名导出会容易得多

import { BotUtils } from './utils'

天哪,我已经用头撞桌子好几个小时了,想把它修好,就这么简单。谢谢我还尝试使用ES模块,但那是另一个让我头疼的问题,所以我回到了正常的导出。不过现在可以了。@dbm这完全是另一回事。你可能已经在用ES6了。天哪,我已经用头撞桌子好几个小时了,试图解决这个问题,就这么简单。谢谢我还尝试使用ES模块,但那是另一个让我头疼的问题,所以我回到了正常的导出。不过现在可以了。@dbm这完全是另一回事。你可能已经在使用ES6了。