运行yarn start启动ts-node项目时MODULE_NOT_FOUND无法找到src/isAuth模块
问题原因
首先明确:该报错和const函数的导出写法没有任何关系,核心是模块导入路径的解析规则不匹配导致的。
具体原因拆解:
- 你在tsconfig.json中配置了
baseUrl: ".",TS编译期识别src/isAuth这类基于根目录的绝对导入路径是正常的,但ts-node运行时默认不会读取tsconfig的baseUrl配置,遵循的是node commonjs的模块解析规则:会优先从node_modules目录下查找src/isAuth模块,自然找不到报MODULE_NOT_FOUND错误。 - 同目录的MyContext.ts导入未报错,是因为你用的是
./MyContext这类相对路径写法,符合node的路径解析规则。 - 额外排查点:如果已经用了相对路径还是报错,检查导入语句中的文件名大小写是否和实际的isAuth.ts完全一致,避免大小写不匹配的问题。
解决方法
提供两种可行方案,按需选择即可:
方案1:改用相对路径导入(无需修改配置,更稳妥)
直接修改person.resolver.ts中导入isAuth的语句,按文件相对位置写路径即可:
如果person.resolver.ts和isAuth.ts都在src根目录下,导入语句改为:
import { isAuth } from './isAuth'
如果person.resolver.ts在src的子目录中(比如src/resolvers/),则对应调整为../isAuth即可。
方案2:配置ts-node识别tsconfig路径规则(无需修改现有导入写法)
安装tsconfig-paths依赖,用于运行时解析tsconfig中配置的baseUrl:
yarn add -D tsconfig-paths
修改package.json中的start启动命令,增加注册参数:
"start": "ts-node -r tsconfig-paths/register src/index.ts"
修改后重新运行yarn start即可正常识别绝对导入路径。
内容的提问来源于stack exchange,提问作者Dr4ke the b4dass
相关产品推荐
相关产品推荐

