无法从另一个JS文件调用函数

时间:2019-05-15 15:13:37

标签: javascript node.js node-modules

解决了这个非常简单的问题,我无法解决。我无法从nodejs中的另一个javascript文件调用函数。

我的主文件:

var Binance = require('./binance.js');

//later in the file
app.post('/createBotOrder', function (req, res, next) {
    console.log("in");
    console.log(Binance);
    console.log(Binance.sum(1, 2));
    console.log("in 2");
});

我的辅助文件:

module.exports = function() {
    this.sum = function(a,b) { return a+b };
    this.multiply = function(a,b) { return a*b };
    //etc
}

输出:

in
[Function]

2 个答案:

答案 0 :(得分:5)

您要导出为具有功能的对象作为对象。

module.exports = { myFunc : function () { //stuff } }

然后在导入myFunc的文件中

const Binance = require('./binance.js')
Binance.myFunc()

答案 1 :(得分:3)

Binance是一个构造函数。它没有sum属性。

当您调用 Binance时,它将为sum的{​​{1}}属性分配一个功能。

您根本不打this

因此:

Binance

也就是说,var Binance = require('./binance.js'); var my_binance = new Binance(); //later in the file app.post('/createBotOrder', function (req, res, next) { console.log("in"); console.log(my_binance); console.log(my_binance.sum(1, 2)); console.log("in 2"); }); 成为构造函数是没有意义的。没有什么可以区分一个实例与另一个实例。您也可以导出一个简单的对象:

Binance

然后:

module.exports = {
    this.sum = function(a,b) { return a+b },
    this.multiply = function(a,b) { return a*b },
};

请注意,以大写字母开头的变量名称通常保留给构造函数使用。由于它不是构造函数,因此我将其重命名。