React Native实例化自定义类时报TypeError: undefined不是构造函数求助
问题原因
- 核心为ES模块的导出导入规则不匹配:你用
import { GameTeam } from './objects/Team'的命名导入语法获取类时,实际导入的GameTeam为undefined,调用new关键字时自然触发“undefined不是构造函数”的报错。
通常由以下两种错误写法导致:
./objects/Team.js文件中,GameTeam类使用了默认导出(export default GameTeam),和命名导入的语法不匹配./objects/Team.js文件完全没有写GameTeam类的导出语句,类没有对外暴露
- 小概率为路径拼写错误:React Native打包环境对文件路径大小写、拼写敏感度较高,路径不匹配也会导致导入内容为
undefined
解决方案
按照你的开发习惯二选一即可:
方案1:保留当前主文件的命名导入写法
在./objects/Team.js中给GameTeam类加上命名导出:
// 直接在类定义前加export export class GameTeam { constructor(name, logoLocation) { this.name = name; this.logoLocation = logoLocation; }; getTeamName() { return this.name; } getTeamLogoLocation() { return this.logoLocation } } // 也可以在类定义后单独加导出语句 // export { GameTeam }
方案2:保留Team.js的默认导出写法
如果你的GameTeam类用的是默认导出,把主文件的导入语句去掉大括号即可:
// 原导入语句为 import { GameTeam } from './objects/Team',修改为 import GameTeam from './objects/Team'
额外排查点
- 核对
./objects/Team.js的相对路径是否正确,检查文件名、文件夹名的大小写是否和导入语句完全一致 - 该问题和变量声明关键字无关,不需要将
const改为var
内容的提问来源于stack exchange,提问作者AR0106
相关产品推荐
相关产品推荐

