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

Laravel 8生产环境执行npm run dev报ELIFECYCLE错误,开发环境正常

Laravel Mix 在 cPanel/WHM 生产环境执行 npm run dev/production 失败(内存耗尽/进程溢出)

问题详情

生产环境执行npm run dev或npm run production时触发ELIFECYCLE错误,预发布/开发环境无任何问题。执行命令后服务器会耗尽内存或生成大量进程,需强制重启,且生成了core内存转储文件。推测核心差异是生产环境运行cPanel/WHM,其安全特性可能拦截了相关进程或限制了资源。

错误日志

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'development' ]
2 info using npm@6.14.18
3 info using node@v14.21.3
4 verbose run-script [ 'predevelopment', 'development', 'postdevelopment' ]
5 info lifecycle @~predevelopment: @
6 info lifecycle @~development: @
7 verbose lifecycle @~development: unsafe-perm in lifecycle true
8 verbose lifecycle @~development: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/secretuser/maplemain/node_modules/.bin:/usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/secretuser/maplemain/node_modules/.bin:/home/secretuser/perl5/bin:/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/cpanel/composer/bin:/home/secretuser/bin
9 verbose lifecycle @~development: CWD: /home/secretuser/maplemain
10 silly lifecycle @~development: Args: [ '-c', 'mix' ]
11 silly lifecycle @~development: Returned: code: 1  signal: null
12 info lifecycle @~development: Failed to exec development script
13 verbose stack Error: @ development: `mix`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:400:28)
13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:400:28)
13 verbose stack     at maybeClose (internal/child_process.js:1088:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:296:5)
14 verbose pkgid @
15 verbose cwd /home/secretuser/maplemain
16 verbose Linux 3.10.0-1160.92.1.el7.x86_64
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "development"
18 verbose node v14.21.3
19 verbose npm  v6.14.18
20 error code ELIFECYCLE
21 error errno 1
22 error @ development: `mix`
22 error Exit status 1
23 error Failed at the @ development script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

环境信息

  • 通用配置:PHP 8、Laravel 8、npm 6.14.18(曾升级至9.7.2)、Node.js v14.21.3、CentOS 7
  • 差异配置:生产环境运行cPanel/WHM,预发布环境无

已尝试方案

  • 删除node_modules和package-lock.json,执行npm cache clean --force后重新运行composer update和npm install
  • 升级npm至9.7.2
  • 多次执行npm run dev触发内存耗尽/进程溢出,需重启服务器

解决建议

1. 检查cPanel/WHM资源与安全限制

  • 登录WHM查看资源限制模块,确认对应cPanel用户的内存、进程数上限是否足够,Laravel Mix构建(尤其是开发模式)需要较多临时资源。
  • 临时禁用ModSecurity测试,若问题消失,说明是规则拦截了Mix的进程或文件操作,需调整规则放行相关行为。

2. 调整Node.js内存限制

执行构建命令时手动指定内存上限,避免溢出:

NODE_OPTIONS="--max-old-space-size=2048" npm run production

(数值可根据服务器内存调整,比如1024、2048,单位为MB)

3. 使用生产模式构建

开发模式npm run dev会启用热重载等调试特性,资源占用较高,生产环境建议直接执行:

npm run production

该模式会做代码压缩优化,进程资源占用更可控。

4. 排查Shell环境差异

  • 对比预发布与生产环境的PATH变量:echo $PATH,确认Node.js和npm的执行路径一致,避免调用错误版本。
  • 直接调用Mix二进制文件测试:
/home/secretuser/maplemain/node_modules/.bin/mix

排查npm脚本执行的环境问题。

5. 分析Core转储文件

使用gdb工具定位崩溃点:

gdb /usr/bin/node core

进入gdb后输入bt查看堆栈信息,精准定位导致内存溢出的模块。

6. 修复文件权限问题

若曾用Root用户执行npm操作,可能导致node_modules权限异常,切换到项目所属cPanel用户(secretuser)重新执行:

npm install
npm run production

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:53:15