React项目将load_routes.js改为.ts后触发Cannot find module错误如何解决
问题原因
原生Node.js运行时默认仅支持加载 .js、.json、.node 后缀的模块,无法直接识别解析 .ts 后缀的TypeScript文件。你直接用node命令执行.ts文件时,Node会按照默认支持的后缀规则查找文件,找不到匹配的模块就会抛出该报错,和文件实际是否存在无关。
解决思路
你可以根据使用场景选择以下任意一种方案:
方案1:开发场景用ts-node直接运行TS文件
- 安装必要开发依赖:
npm install -D ts-node typescript @types/node- 确认项目根目录存在
tsconfig.json配置文件,且include字段包含了node_express目录下的TS文件 - 修改
package.json中的server脚本,将执行命令从node替换为ts-node:
"server": "NODE_ENV=localhost PORT=**** ts-node --max-http-header-size 81000 ./node_express/load_routes.ts"方案2:生产场景先编译TS为JS再执行
- 确保项目已安装typescript依赖,且
tsconfig.json配置正确 - 新增TS编译脚本,再修改
server脚本先执行编译、再运行生成的JS文件,示例配置:
"scripts": { "build:server": "tsc", "server": "npm run build:server && NODE_ENV=localhost PORT=**** node --max-http-header-size 81000 ./node_express/load_routes.js" }注意要将
tsconfig.json中的outDir配置为你期望的编译产物输出目录,同时对应修改server脚本中JS文件的路径。- 确保项目已安装typescript依赖,且
方案3:用tsx零配置运行TS文件
如果你不想额外配置tsconfig相关规则,可以选择更轻量的tsx运行时:- 安装开发依赖:
npm install -D tsx- 修改
server脚本,将node替换为tsx即可:
"server": "NODE_ENV=localhost PORT=**** tsx --max-http-header-size 81000 ./node_express/load_routes.ts"
内容的提问来源于stack exchange,提问作者skate_23
相关产品推荐
相关产品推荐

