使用ExpressJS+TypeScript搭建后端遇模块找不到错误求助
问题描述
用ExpressJS + TypeScript搭建后端时,运行命令 nodemon --exec node --loader ts-node/esm src/index.ts 弹出「Cannot find module...」错误。相关代码与配置如下:
- app.ts 导出代码:
const app = express(); app.use(cors()); app.use(express.json()); export default app;
- index.ts 导入代码:
import app from './app'; // ...其他代码
- package.json 已配置
"type": "module" - tsconfig.json 内容:
{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "rootDir": "./src/", "moduleResolution": "node" }, "include": [ "src/**/*.ts" ] }
解决步骤
1. 补全导入路径的扩展名
ES模块(ESM)要求导入文件必须带完整扩展名,修改index.ts里的导入语句:
import app from './app.ts';
2. 修复tsconfig.json的语法错误
你提供的tsconfig多了一层冗余大括号,正确写法如下(额外添加了常用的互操作配置):
{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "rootDir": "./src/", "moduleResolution": "node", "esModuleInterop": true, "skipLibCheck": true }, "include": ["src/**/*.ts"], "exclude": ["node_modules"] }
3. 适配依赖版本
安装最新版的ts-node、@types/node和typescript,避免版本兼容问题:
npm install -D ts-node@latest @types/node@latest typescript@latest
4. 优化nodemon命令(可选)
在package.json的scripts里配置快捷命令,方便运行:
"scripts": { "dev": "nodemon --watch src --exec ts-node-esm src/index.ts" }
之后直接运行 npm run dev 即可启动服务。
5. 核对文件结构
确认src目录下确实存在app.ts和index.ts,路径拼写无错误(注意Linux/macOS系统区分文件名大小写)。
内容的提问来源于stack exchange,提问作者Linh Ha
相关产品推荐
相关产品推荐

