You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TypeScript与Express的Node.js应用启动时遇多种错误的解决咨询

TypeScript与Express的Node.js应用启动时遇多种错误的解决咨询

看起来你在启动TypeScript + Express的Node.js应用时碰到了几个典型的配置冲突问题,我来帮你一步步拆解原因并解决:

先理清每个错误的根源

  1. TypeError: Unknown file extension '.ts'(运行npm run dev或ts-node src/app.ts时)
    你的package.json里设置了"type": "module",这让Node默认采用ES模块规范来解析文件,但ts-node默认是按CommonJS模式运行的,两者不兼容就导致了无法识别.ts文件的扩展名错误。

  2. Error: Cannot find module(运行ts-node dist/app.js时)
    首先,dist目录里是TypeScript编译后的.js文件,根本不需要用ts-node来运行——直接用node命令就行;其次你的package.json里start脚本写错了(写的是node dist/app.ts),dist里根本没有.ts文件;另外如果没执行过npm run build,dist目录可能是空的,自然找不到模块。


分步修复方案

1. 修正package.json的核心配置

  • 先把错误的start脚本改对:
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "start": "node dist/app.js", // 改成运行编译后的js文件
      "dev": "nodemon",
      "build": "tsc"
    },
    
  • 如果你不想每次都给ts-node加参数,可以在package.json里直接配置ts-node启用ES模块:
    "ts-node": {
      "esm": true
    }
    

2. 调整nodemon.json适配ES模块

因为项目用了ES模块,需要让nodemon调用ts-node时启用ES模式:

{
  "watch": ["src"],
  "execMap": {
    "ts": "ts-node --esm" // 加上--esm参数
  },
  "ext": "ts",
  "ignore": ["src/**/*.spec.ts"]
}

3. 优化tsconfig.json的模块解析配置

针对ES模块调整moduleResolution,同时补充一些实用配置:

{
  "compilerOptions": {
    "module": "ESNext",
    "target": "ESNext",
    "moduleResolution": "bundler", // 替换原有的node,更适配ES模块
    "esModuleInterop": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "resolveJsonModule": true, // 允许导入json文件(可选但常用)
    "allowSyntheticDefaultImports": true // 配合esModuleInterop更好地兼容CommonJS模块
  }
}

验证修复的步骤

  1. 先删掉现有的dist目录(如果有),执行npm run build,检查dist目录下是否生成了app.js等编译后的文件;
  2. 执行npm run start,测试生产环境启动是否正常;
  3. 执行npm run dev,修改src目录下的代码,看nodemon是否能自动重启且无报错。

如果还是有问题,可以检查下是否全局安装了ts-node或者nodemon,尽量用项目本地的依赖(通过npx调用,比如npx ts-node --esm src/app.ts)来避免版本冲突。

备注:内容来源于stack exchange,提问作者M BHARATH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:08:09