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

TypeScript函数导出导入遇编译错误:Cannot read property未定义

TypeError: Cannot read property 'helloWorld' of undefined - 问题排查与修复

咱们来一步步揪出问题所在哈:

核心问题:导入导出的名称不匹配 + 调用时变量名错误

  1. 在utilities/index.ts里,你导出的是toolsFunction(代码是export { toolsFunction }),但在allfunctions.ts里你写了import { taskFunctions as Utility } from './utilities/'——这里的taskFunctions是一个不存在的导出项,导致你拿到的Utility(以及你后续误用的taskFunctions)都是undefined,调用它的helloWorld方法自然会抛出类型错误。
  2. 另外你调用的时候用了taskFunctions.helloWorld(),但你明明给导入的项起了别名Utility,这里变量名也完全搞混了。

修复方案(两种可选)

方案一:直接修正导入和调用的变量名

只需要修改allfunctions.ts的代码,让它和utilities/index.ts的导出对应上:

import { toolsFunction as Utility } from './utilities/';
Utility.helloWorld();

方案二:优化导出逻辑(更符合TS常用规范)

如果你想让导入调用更简洁,可以调整utilities/index.ts的导出方式:

// 方式1:直接重新导出tools.ts里的所有内容
export * from './tools';

对应的allfunctions.ts可以这样写(两种调用方式任选):

// 方式A:作为命名空间导入
import * as Utility from './utilities/';
Utility.helloWorld();

// 方式B:直接解构导入需要的函数
import { helloWorld } from './utilities/';
helloWorld();

或者你也可以把utilities/index.ts改成默认导出:

import * as toolsFunction from './tools';
export default toolsFunction;

对应的allfunctions.ts写法:

import Utility from './utilities/';
Utility.helloWorld();

补充说明

你遇到的“编译前运行正常,编译时报错”的情况,大概率是因为开发时用了ts-node这类工具,它对导入导出的检查比较宽松;而正式编译时TypeScript会严格校验模块导出的匹配性,所以暴露了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:51