使用ts-node运行相对路径文件时出现Cannot Find Module错误
看起来你在运行TypeScript脚本时碰到了模块找不到的问题,这种路径别名导致的解析错误确实挺让人头疼的。先看看你遇到的具体错误:
Error: Cannot find module '@/../prisma/seedFiles/oneTimeScripts/update-resources/utils/utils'
Require stack:
- /Users/braidenparkinson/Development/backend/prisma/seedFiles/oneTimeScripts/update-cost-center/updateCostCenter.ts
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1143:15)
下面给你几个可行的解决思路:
检查并配置tsconfig.json的路径映射
你用到的@/是自定义路径别名,这个需要在tsconfig.json的compilerOptions里配置baseUrl和paths才能让TypeScript识别。比如你的项目结构里,@对应的根目录如果是项目根目录,配置应该类似这样:{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["*"] } } }如果
@原本指向src文件夹,那@/../prisma其实是从src往上跳一级到项目根目录再找prisma,这时候要确保baseUrl和paths的配置和实际目录结构完全匹配。让ts-node支持路径别名
即使tsconfig里配置了路径,ts-node默认可能不会自动加载这些映射规则。你可以安装tsconfig-paths包来解决:npm install -D tsconfig-paths然后用以下命令运行脚本:
npx ts-node -r tsconfig-paths/register updateCostCenters.ts-r tsconfig-paths/register会让ts-node启动时加载路径配置,这样就能正确解析@/开头的别名了。改用相对路径替代别名
要是不想折腾配置,最简单的方法就是把导入语句里的别名换成相对当前脚本的路径。你的updateCostCenter.ts在update-cost-center文件夹下,要导入的utils.ts在同级的update-resources/utils里,所以相对路径应该是:import { ... } from '../update-resources/utils/utils';这样ts-node就能直接找到对应的模块文件了。
检查路径大小写
别小看这个细节!如果你的系统是MacOS或者Windows,文件系统可能大小写不敏感,但Node.js的模块解析是严格区分大小写的。确认你导入路径里的文件夹和文件名大小写和实际文件完全一致,比如update-resources别写成Update-Resources。
备注:内容来源于stack exchange,提问作者codernoob8

