部署TypeScript Express服务到Heroku提示ts-node不存在问题咨询
问题修复方案
你判断的修改方向完全正确,将start脚本改为指向编译后的JS文件即可解决当前启动报错问题。
核心报错原因
ts-node: not found是因为ts-node属于开发依赖,默认放在package.json的devDependencies字段中,Heroku生产环境部署时会自动卸载所有开发依赖,因此启动时无法找到该命令。- 你使用的第三方TypeScript构建包仅帮你完成了TS代码编译生成
dist目录的步骤,未修改启动逻辑,因此即便编译成功,启动时调用ts-node还是会失败。
具体操作步骤
- 修改
package.json中的start脚本配置:
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node dist/src/index.js", "dev": "ts-node-dev src/index.ts", "build": "tsc", // 其余脚本保持不变 }
- 建议切换回官方
heroku/nodejs构建包,比第三方构建包兼容性和稳定性更高,官方构建包会自动识别build脚本完成TS编译,不需要额外配置,切换命令为:heroku buildpacks:set heroku/nodejs - 提交修改后的配置重新部署即可正常启动服务。
替代Heroku的托管平台推荐
适合托管Express服务+PostgreSQL数据库的靠谱平台包括:
- Render:内置Node.js运行环境和PostgreSQL托管服务,免费额度无强制休眠,部署流程简单,适合个人和小型项目使用。
- Railway:提供开箱即用的各类服务部署模板,Node.js和PostgreSQL都可以一键创建,有每月免费额度,配置灵活度高。
- Vercel:对Node.js生态适配良好,支持无服务器函数部署Express服务,配合官方Vercel Postgres使用体验流畅,适合全栈项目。
- Fly.io:支持容器化部署应用,可按需创建PostgreSQL实例,全球节点访问速度表现优秀,适合有一定用户量的项目使用。
- 国内云厂商轻量应用服务器:阿里云、腾讯云的轻量服务器产品,自主度高,适合有基础运维能力的用户长期使用。
内容的提问来源于stack exchange,提问作者Mario Carbonell
相关产品推荐
相关产品推荐

