JavaScript跨类调用方法报slackService.getAccessData is not a function错误咨询
问题原因
你遇到的报错核心是slackService.getAccessData不存在,问题出在模块导出导入逻辑和代码语法错误两点:
- 导出类型不匹配:你在
slackService.js中默认导出的是SlackService类本身,不是类的实例,而getAccessData是定义在类原型上的实例方法,必须实例化之后才能调用。你在slackController.js中直接导入类构造函数就调用实例方法,自然会触发不是函数的报错。 - 语法错误:
slackService.js的代码末尾多了一个多余的右大括号,会导致模块解析异常,也可能引发调用失败。
解决方案
二选一即可:
方案1(更推荐,无需修改controller代码)
修改slackService.js的导出逻辑,导出实例化后的对象,和SlackController的导出逻辑保持一致:
把slackService.js的最后一行
export default SlackService;
替换为
export default new SlackService();
同时删掉slackService.js中类定义末尾多余的那个右大括号,修正语法错误。
方案2(修改controller代码)
保持slackService.js的导出不变,在slackController.js中导入类后先实例化再调用:
在slackController.js的import语句后补充实例化逻辑:
import SlackService from "../services/SlackService.js" const slackService = new SlackService()
同样需要先删掉slackService.js中多余的右大括号修正语法。
内容的提问来源于stack exchange,提问作者enCouder
相关产品推荐
相关产品推荐

