我正在开发一个nodejs项目,并且有一个小问题。我知道这个问题并不难解决,但是我已经搜索了几个小时,但仍然不知道如何解决这个问题:

var gs = require('./gs1');
if (uncompressedDigitalLinkInput != "") {
    try {
        this.error3="";
        console.log("Test");
        gs.myfunction();
    }
    catch(err) {
        this.error3=err+"\n"+err.stack;
        return "";
    }
}
else {
    return "";
}


问题是这行:

console.log("Test");
gs.myfunction();


实际上,在这两个之中,只有console.log有效。另一个没有。

这是“ gs.myfunction”的代码

class GS1DigitalLinkToolkit {
    function myfunction(){
        console.log('Function called');
    }
}
module.exports.myfunction = myfunction;


它告诉我“ gs.myfunction不是函数”。我确保需求是正确的道路。那么为什么它不起作用呢?

最佳答案

发生这种情况是因为该方法只能由GS1DigitalLinkToolkit的实例调用。两种可能的解决方案可以是:

1)将方法设为静态并将其导出为

class GS1DigitalLinkToolkit {
  static myfunction() {
      console.log('Function called');
  }
}

module.exports.myfunction = GS1DigitalLinkToolkit.myfunction


2)导入类,创建实例并在其上调用方法

class GS1DigitalLinkToolkit {
    function myfunction(){
        console.log('Function called');
    }
}
module.exports.gsclass = GS1DigitalLinkToolkit;




var gs = require('./gs1');
if (uncompressedDigitalLinkInput != "") {
    try {
        this.error3="";
        console.log("Test");
        gs1 = new gs.gsclass();
        gs1.myfunction();
    }
    catch(err) {
        this.error3=err+"\n"+err.stack;
        return "";
    }
}
else {
    return "";
}

10-06 07:51
查看更多