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

Laravel项目部署到Heroku遭遇应用崩溃问题求助

问题分析

你的错误根源有两个:

  1. 依赖缺失:if-env和concurrently这两个工具未在package.json中声明为依赖,Heroku构建时不会自动安装,导致启动脚本执行失败。
  2. 启动配置冲突:Laravel是PHP框架,你已通过Procfile指定用Apache(heroku-php-apache2)启动项目,但package.json里的start脚本是Node.js项目的启动逻辑,两者配置不匹配。
解决方案

1. 安装缺失依赖

在本地项目根目录执行命令,将if-env和concurrently添加到开发依赖:

npm install if-env concurrently --save-dev

也可直接修改package.json的devDependencies部分,手动添加:

"devDependencies": {
    "@popperjs/core": "^2.11.6",
    "axios": "^0.27",
    "bootstrap": "^5.2.3",
    "laravel-vite-plugin": "^0.6.0",
    "lodash": "^4.17.19",
    "postcss": "^8.1.14",
    "sass": "^1.56.1",
    "vite": "^3.0.0",
    "if-env": "^1.0.4",
    "concurrently": "^7.6.0"
}

2. 修正启动逻辑(核心)

Laravel是PHP项目,无需用Node.js的server.js启动,需调整启动配置消除冲突:

方案A:移除Node启动脚本(推荐)

保留Laravel默认的Vite前端脚本,删除Node相关的启动命令:

"scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
}

此时Heroku会自动按照Procfile的配置启动Apache服务。

方案B:保留环境判断逻辑并适配PHP启动

若需保留环境判断,修改start:prod脚本为Apache启动命令:

"scripts": {    
    "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", 
    "start:prod": "vendor/bin/heroku-php-apache2 public/", 
    "start:dev": "concurrently \"nodemon --ignore 'client/*'\" \"npm run dev\""
}

同时删除Procfile,让Heroku通过package.json的start脚本启动服务。

3. 添加前端编译脚本

确保Heroku部署时自动编译Laravel前端资源,在package.json的scripts中添加:

"heroku-postbuild": "npm run build"

4. 重新部署

修改完成后提交代码到Heroku:

git add .
git commit -m "Fix dependencies and start configuration"
git push heroku main
验证

部署完成后执行heroku logs --tail查看日志,确认无if-env: not found、concurrently: not found错误,且Apache服务正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:50:23