将TS项目转为JS时遇Cannot find Module错误,求解决指导
解决TypeScript转JavaScript时的MODULE_NOT_FOUND错误
错误信息
Error: Cannot find module 'C:\Users\hadiz\Desktop\FinalApp\backend\index.js' at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15) at Function.Module._load (node:internal/modules/cjs/loader:804:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
问题分析
你的package.json中main字段和start脚本都指向根目录的index.js,但TypeScript编译后的产物大概率不在这个位置:
- 源码入口是
src/index.ts,若tsconfig.json未配置outDir,编译后的index.js会生成在src目录下,而非根目录; - 若配置了
outDir(比如dist),产物会在对应目录,同样不会出现在根目录。
解决方案
1. 确认tsconfig.json配置
检查或创建tsconfig.json,确保rootDir和outDir正确指向源码和输出目录:
{ "compilerOptions": { "rootDir": "./src", "outDir": "./dist", "target": "ES6", "module": "CommonJS", "strict": true }, "include": ["src/**/*"], "exclude": ["node_modules"] }
2. 修改package.json配置
根据编译产物的位置,调整main字段和start脚本:
- 若产物输出到
dist目录:
{ "name": "backend", "version": "1.0.0", "description": "", "main": "dist/index.js", "scripts": { "start": "node dist/index.js", "build": "tsc -p .", "dev": "nodemon --exec ts-node src/index.ts" }, // 其余依赖配置不变 }
- 若产物和源码同目录(
src下):
{ "name": "backend", "version": "1.0.0", "description": "", "main": "src/index.js", "scripts": { "start": "node src/index.js", "build": "tsc -p .", "dev": "nodemon --exec ts-node src/index.ts" }, // 其余依赖配置不变 }
3. 执行构建并启动
先运行构建命令生成JavaScript产物:
npm run build
确认对应目录下生成了index.js后,再启动项目:
npm start
额外优化(可选)
将开发依赖移到devDependencies字段,更符合项目规范:
npm uninstall nodemon ts-node typescript npm install --save-dev nodemon ts-node typescript
内容的提问来源于stack exchange,提问作者Hadi Zouhbi
相关产品推荐
相关产品推荐

