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

克隆项目后用nodemon+ts-node启动server.ts遇.ts扩展名未知错误

启动TS项目时出现ERR_UNKNOWN_FILE_EXTENSION错误

我在笔记本电脑上创建并配置的项目运行一切正常,但在PC上克隆该项目后,执行npm run start启动server.ts时出现如下错误:

megaa@DESKTOP-OIQ46IB MINGW64 /d/Code/Pet-project/server (main)
$ npm run start

> server-side@1.0.0 start
> nodemon --exec ts-node server.ts

[nodemon] 2.0.22
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: ts,json
[nodemon] starting `ts-node server.ts`
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for D:\Code\Pet-project\server\server.ts
    at new NodeError (node:internal/errors:405:5)
    at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:99:9)
    at defaultGetFormat (node:internal/modules/esm/get_format:142:36)
    at defaultLoad (node:internal/modules/esm/load:91:20)
    at nextLoad (node:internal/modules/esm/hooks:733:28)
    at load (D:\Code\Pet-project\server\node_modules\ts-node\dist\child\child-loader.js:19:122)
    at nextLoad (node:internal/modules/esm/hooks:733:28)
    at Hooks.load (node:internal/modules/esm/hooks:377:26)
    at MessagePort.handleMessage (node:internal/modules/esm/worker:168:24)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:778:20) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
[nodemon] app crashed - waiting for file changes before starting...

我已经尝试过以下操作,但都没解决问题:

  • 移除package.json中的"type": "module"字段
  • 使用nodemon --exec ts-node-esm server.ts或nodemon --exec ts-node --esm server.ts命令启动项目
  • 在tsconfig.json中配置了ts-node的ES模块支持:
    "ts-node": {
        "esm": true,
        "experimentalSpecifierResolution": "node"
    }
    
  • 全局安装了typescript、tsc、ts-node和nodemon

完整配置文件

tsconfig.json

{
    "compilerOptions": {
        "target": "ES2021",
        "useDefineForClassFields": true,
        "module": "ESNext",
        "lib": [
            "ES2021",
            "DOM",
            "DOM.Iterable"
        ],
        "skipLibCheck": true,
        /* Bundler mode */
        "moduleResolution": "node",
        "allowImportingTsExtensions": true,
        "allowSyntheticDefaultImports": true,
        "resolveJsonModule": true,
        "esModuleInterop": true,
        "isolatedModules": true,
        "noEmit": true,
        /* Linting */
        "strict": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "noFallthroughCasesInSwitch": true
    },
    "ts-node": {
        "esm": true,
        "experimentalSpecifierResolution": "node"
    }
}

package.json

{
  "name": "server-side",
  "version": "1.0.0",
  "description": "",
  "main": "./server.ts",
  "scripts": {
    "start": "nodemon --exec ts-node server.ts"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/express": "^4.17.17",
    "chalk": "^5.2.0",
    "cors": "^2.8.5",
    "express": "^4.18.2",
    "mysql": "^2.18.1",
    "ts-node": "^10.9.1",
    "tsc": "^2.0.4"
  },
  "devDependencies": {
    "@types/cors": "^2.8.13",
    "@types/mysql": "^2.15.21",
    "nodemon": "^2.0.22",
    "typescript": "^5.1.6"
  }
}

若需要更多信息可随时告知。


解决建议

  • 对齐依赖版本:删除项目根目录的node_modules和package-lock.json,重新执行npm install,确保本地依赖版本和笔记本一致,避免全局与本地包版本冲突。
  • 修改启动脚本:更新package.json中的启动命令,明确指定ts-node使用项目配置文件:
    "scripts": {
      "start": "nodemon --exec ts-node --project tsconfig.json server.ts"
    }
    
  • 调整模块解析策略:将tsconfig.json中的moduleResolution从node改为bundler,适配ESNext模块配置:
    "moduleResolution": "bundler"
    
  • 检查Node.js版本:确认PC上的Node.js版本与笔记本一致,推荐使用v18及以上版本,ES模块支持更稳定。

内容的提问来源于stack exchange,提问作者Lvasche

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:41:58