为啥导出的模块错误报告定义的函数“不是函数”
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
类中的方法是实例方法(不是静态方法)。 addLatestReport
、commitLatestReport
、pushLatestReport
在GITHelper.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)