首页 > 解决方案 > 为什么我的基本功能不起作用(在 NodeJS 中)?

问题描述

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

标签: javascriptnode.jsdebugging

解决方案


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

推荐阅读