【问题标题】:Why does my Basic function is not working (in NodeJS)?为什么我的基本功能不起作用(在 NodeJS 中)?
【发布时间】:2019-07-18 21:32:12
【问题描述】:

我正在做一个 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 不是函数”。我已经确保 require 是正确的路径。那么为什么它不起作用呢?

【问题讨论】:

  • 你能提供你得到的错误信息吗?
  • @Phillip 是的,谢谢您的回复,它告诉我“gs.myfunction 不是函数”
  • 我看到你也刚刚更新了你的代码示例。 function myfunction() {... 真的在课堂内吗?那应该是语法错误。将其移出类,或将其设为静态方法并导出整个类
  • @Phillip,好的。我已将其移出班级并导出整个班级,但问题仍然存在。我仍然有相同的错误消息
  • class GS1DigitalLinkToolkit { function myfunction(){ 这不是开始的有效语法。发布你的真实代码而不是在这里编造东西。

标签: javascript node.js debugging


【解决方案1】:

这是因为该方法只能由 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 "";
}

【讨论】:

    【解决方案2】:

    对于您的主文件test.js

    var gs = require('./gs1')
    gs.myfunction();
    

    还有这个必需的文件gs1.js:

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

    你应该得到:

    $ node ./test.js
    Function called
    

    【讨论】:

    • 您好,感谢您的回复。我知道这是我应该得到的,但是我收到一条错误消息“TypeError:gs.myfunction is not a function”为什么?
    • 你是说我的答案中的确切代码仍然会出现错误吗?
    • 不,我已将您的代码集成到我的原始代码中,但错误仍然存​​在
    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多