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

ESLint检测报错:默认导出的ES6函数被判定为非函数类型

解决TypeError: namespace is not a function问题

问题根源

你在类库的index.js中把目标函数包装成了对象属性默认导出,但在项目的usedfile.js中直接把导入的对象当作函数调用,导致类型不匹配触发报错。

你的类库当前导出结构示例

// namespace.js(类库)
export default function myNamespace(param) {
  // 函数逻辑
}

// index.js(类库)
import namespace from './namespace.js';
export default { namespace }; // 这里把函数包装成了对象属性

当你在项目中导入后直接调用:

// usedfile.js(项目)
import namespace from 'my-lib';
namespace(); // 此时namespace是一个对象,不是函数,自然报错

两种可行解决方案

方案1:修改类库导出逻辑(推荐)

直接将namespace.js的函数作为index.js的默认导出,无需包装对象:

// index.js(类库)
import namespace from './namespace.js';
export default namespace; // 直接导出函数本身

修改后项目中的调用代码无需改动,namespace()即可正常执行。

方案2:保持类库结构,修改项目调用方式

如果必须保留对象导出的结构,需要调整项目中的导入和调用逻辑:

  • 方式A:通过对象属性访问函数
// usedfile.js(项目)
import lib from 'my-lib';
lib.namespace(); // 调用对象中的函数属性
  • 方式B:解构导入目标函数
// usedfile.js(项目)
import { namespace } from 'my-lib';
namespace(); // 直接调用解构得到的函数

验证步骤

  1. 修改类库代码后,重新打包类库(如果需要)
  2. 在项目中执行yarn reinstall my-lib更新依赖
  3. 重新运行ESLint检测,确认报错消失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:12:41