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

将TypeScript+Node.js服务部署至render.com遇文件扩展名错误

解决Render.com部署TypeScript+Node.js服务的文件扩展名错误

错误原因

直接用node app.ts启动服务,Node.js原生不支持解析.ts文件扩展名,触发ERR_UNKNOWN_FILE_EXTENSION错误。从日志可见Render使用了node app.ts作为启动命令,而非你配置的ts-node-dev app.ts。

解决方案

1. 更新package.json配置

修改scripts字段,添加编译脚本并调整启动逻辑,确保生产环境运行编译后的JavaScript文件:

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "dist/app.js", // 改为编译后的入口文件
  "scripts": {
    "dev": "ts-node-dev app.ts", // 保留开发环境热重载脚本
    "build": "tsc", // 添加TypeScript编译命令
    "start": "node dist/app.js", // 生产环境启动编译后的JS
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  // 其余依赖配置保持不变
}

2. 优化tsconfig.json配置

确保include字段覆盖所有需要编译的TypeScript文件,若项目有多个TS文件,建议调整为:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "strict": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist"
  },
  "include": ["**/*.ts"], // 覆盖所有TS文件
  "exclude": ["node_modules"]
}

3. 配置Render的部署命令

在Render的服务配置页面,设置:

  • Build Command: npm install && npm run build
  • Start Command: npm start

Render会先安装所有依赖,编译TypeScript到dist目录,再运行编译后的app.js文件,避免直接运行TS文件的错误。

额外说明

  • ts-node-dev是开发环境热重载工具,生产环境无需使用,直接运行编译后的JS文件性能更优。
  • 若Render构建时无法找到tsc命令,可将typescript从devDependencies移至dependencies中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:52:51