Node.js部署Heroku成功后运行报错missing script: start如何解决
问题原因
核心错误来自日志中的npm ERR! missing script: start提示:Heroku部署Node.js应用时,默认会执行npm start命令启动项目,但你的项目根目录下的package.json文件没有配置对应的start启动脚本,导致启动进程异常退出,最终触发H10应用崩溃报错。
本地运行正常是因为你大概率是直接通过node 入口文件名.js的方式手动启动服务,不需要调用npm的start脚本,所以没有提前暴露该问题。
解决方案
- 打开项目根目录下的
package.json文件,找到scripts配置项,添加start启动命令,示例如下(将app.js替换为你实际的项目入口文件名,比如index.js、server.js都可以):
{ "name": "你的项目名称", "version": "1.0.0", "scripts": { "start": "node app.js" }, "dependencies": { // 项目原有依赖保持不变 } }
- 额外检查项目入口文件的端口监听配置,不要写死固定端口3000,要适配Heroku的动态端口分配规则,修改示例:
// 错误写法(本地可用,Heroku会失效) // app.listen(3000) // 正确写法 const PORT = process.env.PORT || 3000 app.listen(PORT, () => { console.log(`服务已启动,端口:${PORT}`) })
- 将修改后的文件提交到代码仓库,重新推送到Heroku部署即可正常访问。
内容的提问来源于stack exchange,提问作者Smart Punchy
相关产品推荐
相关产品推荐

