为什么导出的模块错误报告已定义的函数“不是函数”

时间:2019-09-25 18:46:30

标签: javascript node.js mochawesome

这是我定义函数并使用module.exports导出它们的地方

class GITHelper extends Helper {

addLatestReport(){
  simpleGitPromise.addRemote(date,remote);
    return simpleGitPromise.add('.')
      .then(
          (addSuccess) => {
            console.log(addSuccess);
          }, (failedAdd) => {
            console.log('adding files failed');
      });
}

commitLatestReport(){
  console.log("Committing...");
  return simpleGit.commit("Latest output from Automated UI Testing", "./output");
}

pushLatestReport() {
    console.log('Pushing...');
    return simpleGit.push(remote);
}

}

module.exports = GITHelper;

我需要使用此模块在另一个节点依赖文件(mochawesome)中

var gitHelper = require('../../../helpers/GITHelper.js');

然后我像这样调用函数:

async function gitSender()
{
 await gitHelper.addLatestReport();
 await gitHelper.commitLatestReport();
 await gitHelper.pushlatestReport();
 console.log("Upload completed");
}

“ TypeError:gitHelper.addLatestReport不是函数”

这些未定义的功能吗?它们没有正确导出吗?

1 个答案:

答案 0 :(得分:1)

您的GITHelper类中的方法是实例方法(不是静态方法)。 addLatestReportcommitLatestReportpushLatestReportGITHelper.prototype中。因此,这些方法从实例(const gitHelper = new GitHelper; gitHelper.addLatestReport();)开始变得有意义。

尝试创建GitHelper的实例以使用方法

const GitHelper = require('../../../helpers/GITHelper.js');
const gitHelper = new GitHelper();

async function gitSender()
{
 await gitHelper.addLatestReport();
 await gitHelper.commitLatestReport();
 await gitHelper.pushlatestReport();
 console.log("Upload completed");
}

另一个选择是制作静态方法。如果这些方法不使用this关键字,则这些方法可以是静态的。

class ConsoleExample {
   static sayHello() {
      console.log('hello')
   }
}


ConsoleExample.sayHello();