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

Posted

技术标签:

【中文标题】为啥导出的模块错误报告定义的函数“不是函数”【英文标题】:Why does an exported module error report that a defined function "is not a function"为什么导出的模块错误报告定义的函数“不是函数” 【发布时间】:2020-01-26 00:33:21 【问题描述】:

这是我定义我的函数并使用 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 不是函数"

这些不是定义的函数吗?它们没有正确导出吗?

【问题讨论】:

从 '../../../helpers/GITHelper.js' 导入 gitHelper 。因为只有模块导出 【参考方案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();

【讨论】:

作为第三种选择,您可以导出类实例。 export default new GitHelper(),那么所有导入模块都可以共享该实例而不是创建自己的实例。

以上是关于为啥导出的模块错误报告定义的函数“不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

自定义模块:未捕获类型错误:未定义不是函数

自定义 Bentley InRoads 报告 - 带有简单 JavaScript 数学函数的 xsl 文件产生 +/- 0.05 错误,我不知道为啥?

如何修复 Python 中的“ImportError:动态模块未定义模块导出函数 (PyInit_cv2)”错误?

KivyMD Xcode 构建错误 - ImportError: 动态模块未定义模块导出函数 (PyInit__imaging)

Sequelize string 不是函数错误,为啥?

为啥错误“c.getTimezoneOffset 不是函数”?