Typescript报错Morph未定义:同目录morph.ts导入失效原因排查
解决
Morph is not defined导入失效问题 这个报错的核心逻辑很明确:你虽然导入了morph.ts文件,但里面的Morph类既没有被正确导出,也没被sketch.ts引入到当前作用域里。下面一步步帮你修复:
1. 先修正morph.ts的导出规则
在morph.ts里,你定义的Morph类必须用export关键字暴露出来,这样其他文件才能引用它。比如:
// morph.ts export class Morph { setup(p: p5) { // 你的setup逻辑代码 } draw(p: p5) { // 你的draw逻辑代码 } }
如果整个文件只导出这一个类,也可以用默认导出的方式:
// morph.ts export default class Morph { // ... 类内部逻辑 }
2. 修改sketch.ts的导入语句
你原来写的import './morph'只是让编译器执行了morph.ts的代码,但并没有把Morph类引入到当前文件的作用域里,自然会提示“未定义”。根据morph.ts的导出方式对应修改:
- 如果是命名导出(上面第一种写法),改成:
import 'p5'; import { Morph } from './morph'; // 解构导入具体的Morph类
- 如果是默认导出(上面第二种写法),改成:
import 'p5'; import Morph from './morph'; // 直接导入默认导出的类
3. 额外的检查项
- 确认
tsconfig.json配置:如果用TypeScript编译,要保证module字段设为ESNext/ES6+,moduleResolution设为NodeNext或Node16,确保模块解析规则正常。 - 文件名大小写:在Linux/macOS这类区分大小写的系统上,
morph.ts和Morph.ts是两个不同文件,要保证导入语句里的文件名和实际文件名完全一致。
这样调整后,sketch.ts就能正确获取到Morph类,也就不会再出现Uncaught ReferenceError的报错了。
内容的提问来源于stack exchange,提问作者user3523406
相关产品推荐
相关产品推荐

