TypeScript导入模块报ERR_MODULE_NOT_FOUND错误如何排查解决
错误原因
你的写法存在两个核心问题:
export declare module是TypeScript的环境类型声明语法,仅用于给TS编译器提供类型校验的元信息,编译后会被完全擦除,不会生成任何可被导入的运行时代码,相当于你只写了类型注释,根本没有导出真实存在的FontList值。declare module语法的设计用途是描述外部引入的非TS模块的类型形状,不是用来在当前TS文件内定义可导出的实体对象/模块的,你当前写的newTSFile.ts编译后输出的JS是空内容,导入时自然找不到对应导出项。
修复方法
如果你的目标是构建带类型提示的静态查找表,直接导出实际的常量值即可,TS会自动推导对应类型,不需要用declare语法。
修改newTSFile.ts代码如下:
export const FontList = { DEFAULT_DATA: { james: { age: '23' }, jack: { age: '22' } } } as const;
末尾加
as const可以让TS推导出精确的字面量类型,更适合静态查找表的使用场景,避免类型被放宽为通用string。
原有主文件的导入写法不需要修改,即可正常运行:
import { FontList } from './newTSFile'; console.log("font list: ", FontList);
补充说明:如果你原本的需求是单独编写类型声明文件(.d.ts后缀),那必须额外对应编写实际的运行时代码实现,所有带declare关键字的代码都不会产生可执行的JS内容,不能直接作为运行时导入的模块使用。
内容的提问来源于stack exchange,提问作者sal3jfc
相关产品推荐
相关产品推荐

