在Apollo Server(TypeScript)中导入单独文件typeDefs时遇模块未找到错误
解决模块找不到的问题
排查方向1:确认编译输出文件存在
- 检查
dist/graphql目录下是否生成了schema.js(或对应扩展名的编译文件) - 核对tsconfig配置:
outDir是否正确指向dist目录include数组是否包含src/graphql/schema.ts所在路径,比如设置"src/**/*"确保所有src下文件都被编译- 确认
exclude列表没有意外排除graphql目录
排查方向2:修正导入路径(ES模块必填扩展名)
如果项目使用ES模块(tsconfig中module设为ESNext/ES2020等),Node.js要求导入必须带完整文件扩展名:
- 原导入代码若为:
import { typeDefs } from './graphql/schema' - 修改为:
import { typeDefs } from './graphql/schema.js'
(TS编译后生成.js文件,运行时Node.js需要明确指定扩展名才能找到文件)
排查方向3:核对文件和目录命名
- 确认src目录结构为
src/graphql/schema.ts,无拼写错误(Mac/Linux系统大小写敏感,注意Schema.ts和schema.ts是不同文件) - 检查编译脚本(如
tsc命令)是否正常执行,无编译报错
额外检查
如果使用ts-node等工具,确保运行时指向dist目录下的编译文件,而非直接运行TS源文件(除非配置了对应模块解析规则)
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

