Heroku部署Laravel+Vite遇报错:vite未找到及文件监视器超限求助
解决方案:Heroku上Laravel + Vite运行问题
一、解决vite: not found错误
核心原因:Node版本过低
Laravel 9搭配的Vite 3.x要求Node.js版本至少为14.18.0或16.0.0,你当前使用的Node 8.15完全不兼容,这是Vite无法被找到的主要原因。
修复步骤:
- 在项目根目录创建
.nvmrc文件,指定兼容的Node版本:
echo "16" > .nvmrc
- 提交文件并重新部署到Heroku:
git add .nvmrc git commit -m "Specify compatible Node.js version" git push heroku main
Heroku会自动识别.nvmrc并安装对应版本的Node,确保Vite依赖能正常安装。
二、解决ENOSPC文件监视器超限错误
核心问题:错误使用dev模式
npm run dev是本地开发专用命令,会启动热重载服务并监听大量文件,而Heroku的dyno有严格的文件监视器数量限制,且dev模式的服务仅绑定localhost,外部无法访问。
正确生产部署流程:
构建生产静态资源:
Laravel默认已配置build命令,部署时Heroku会自动执行(若未自动执行,可确保package.json的scripts包含以下内容):"scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview" }构建后的静态资源会生成在
public/build目录,Laravel会自动加载这些资源。无需运行dev服务:
部署完成后,直接访问你的Heroku域名即可,Heroku的PHP buildpack会自动运行Laravel的web服务,无需手动启动Vite dev server。
临时调试方案(不推荐):
如果必须在Heroku上临时运行dev模式,可修改vite.config.js减少监听范围,避免触发文件监视器限制:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, }), ], server: { watch: { ignored: ['**/.heroku/**', '**/node_modules/**', '**/vendor/**'] } } });
内容的提问来源于stack exchange,提问作者bozsudo
相关产品推荐
相关产品推荐

