Laravel AWS服务器部署执行vendor/bin/sail npm run dev遇ENOSPC错误求助
错误原因解析
这个错误和npm依赖漏洞完全无关,所以你用npm audit fix --force根本解决不了问题。
核心问题是Linux系统的文件监视器数量上限被耗尽:错误里的ENOSPC是"Error NO Space"的缩写,但这里不是磁盘空间不足,而是系统给单个用户分配的inotify文件监视句柄配额用完了。Laravel 9用Vite做前端开发服务器,它需要监听大量文件变化来实现热重载,当项目文件(包括vendor这类目录)数量超过系统默认限制时,就会触发这个错误。
解决步骤
1. 临时提升文件监视器上限(立即生效,重启系统后失效)
在你的AWS服务器宿主机上执行以下命令:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
这会把单个用户可监视的文件数量从默认的8192提升到524288,足够覆盖绝大多数Laravel项目的需求。
2. 让Vite忽略不必要的目录(推荐做法)
Laravel默认的Vite配置可能会监听vendor、node_modules这类不需要热重载的目录,直接修改项目根目录下的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: ['**/vendor/**', '**/node_modules/**'] } } });
这样Vite就不会浪费资源监听这些无关目录,从根源上减少文件监视器的使用量。
3. Laravel Sail容器注意事项
因为你用的是Laravel Sail(Docker容器),不需要在容器内单独修改配置,只要宿主机调整了文件监视器上限,容器会自动继承这个设置。
验证修复
完成上述操作后,重新执行命令:
vendor/bin/sail npm run dev
如果不再报错,说明问题已经解决。
内容的提问来源于stack exchange,提问作者Labhrann Robert
相关产品推荐
相关产品推荐

