You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS模块可导出类但无法导出函数,调用时报TypeError求助

问题原因分析

你遇到的TypeError: chain.getSwapChainContractInstance is not a function错误,核心原因是CommonJS模块导出机制的覆盖问题:

在你的模块代码末尾,你直接赋值了module.exports = { SwapToken, SwapChainV2 },这会完全替换掉模块原本的导出对象——之前通过exports.getSwapChainContractInstance和exports.getSwapValueContractInstance添加的函数,会被这个新的赋值覆盖,外部导入时自然找不到这些函数。

解决方案

有两种修复方式,任选其一即可:

方式一:将函数合并到最终导出对象

修改模块末尾的导出代码,把两个工具函数和类一起放入module.exports对象:

// 替换原来的module.exports行
module.exports = {
  SwapToken,
  SwapChainV2,
  getSwapChainContractInstance,
  getSwapValueContractInstance
}

方式二:基于exports对象添加所有导出项

不要直接赋值module.exports,而是通过exports对象逐个添加类和函数:

// 移除原来的module.exports = { SwapToken, SwapChainV2 }
// 改为直接添加到exports
exports.SwapToken = SwapToken;
exports.SwapChainV2 = SwapChainV2;

// 保留原来的函数导出
exports.getSwapChainContractInstance = function() { /* ... */ }
exports.getSwapValueContractInstance = function() { /* ... */ }
验证修改后的导入使用

修改后,你原来的导入方式可以正常访问所有导出内容:

const chain = require('../models/chain/chain');
// 可以调用函数
const swapChainInstance = chain.getSwapChainContractInstance();
// 也可以使用类
const { SwapToken, SwapChainV2 } = require('../models/chain/chain');

内容的提问来源于stack exchange,提问作者Gleichmut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:33:18