【问题标题】:npm run build in php Laravel hang or exitnpm run build in php Laravel 挂起或退出
【发布时间】:2020-09-20 16:29:51
【问题描述】:

我正在尝试使用以下规格将 Laravel 项目部署到我的服务器:

  • 操作系统:CentOS Linux 7.8.2003 版
  • Nodejs:13.14.0
  • npm: 6.14.5
  • 1 个 CPU
  • 4GB 内存

一切都很好,但只是一步,因为我将 ReactJS 与 Laravel 一起使用,我必须运行 npm run dev 才能让 webpack 构建我的资产文件。 (这只是构建视图的步骤,它在我的本地机器和我朋友的机器上运行良好,操作系统不同,MacOS 和 Ubuntu)。

但是当我运行npm run dev 时,系统要么像这样挂起

[spyets@vultr current]$ npm run dev

> @ dev /home/spyets/public_html/yamlive/releases/3
> npm run development


> @ development /home/spyets/public_html/yamlive/releases/3
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

或显示此错误

Exit Code: 254 (Unknown error)                                                    

  Host Name: development                                                            

  ================                                                                  
  bash: fork: retry: No child processes                                             
  bash: fork: retry: No child processes                                             
  bash: fork: retry: No child processes                                             
  bash: fork: retry: No child processes                                             
  bash: fork: Resource temporarily unavailable 

我不知道这是否能给你更多信息,我运行了一个 vtop(终端管理工具?),每次运行 npm run dev 命令时,vtop 就崩溃了

我尝试了什么

  1. 重启服务器
  2. 重新安装nodejs(我直接用yum安装nodejs,不使用nvm
  3. 将 nodejs 从 12.20.2 升级到 13.14.0(目前在 13.14.0 中)

我是 Centos 和部署的新手。

编辑

  • 我还尝试制作交换文件并添加 3GB 交换空间
  • 我尝试多次删除 node_modules 并使用 npm install 重新安装
  • 同时运行 npm run devnpm run prod 导致失败或崩溃

【问题讨论】:

  • 如果您尝试部署,为什么要运行npm run dev?应该是npm run production,你也跑npm install了吗?
  • 啊,是的,我只是运行npm run dev 进行调试,我确实运行了npm run prod。我很确定我已经运行 npm install,我也尝试删除 node_modules 并再次运行 npm install

标签: node.js laravel npm webpack centos7


【解决方案1】:

就在 2 天前,我在运行 npm run prod 时遇到了同样的问题。该命令将启动,然后在 2 分钟后终止,让我一无所有。

然后我遇到了交换内存。我按照这个答案How do you add swap to an EC2 instance? 并在我的托管服务器上添加了一个交换内存。

步骤如下:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

要确认这一点,运行htop,你会看到Swp [|||| 0K/1.00G]

我仍然建议阅读这篇文章以更好地理解这一点。

【讨论】:

  • 是的,谢谢你指出这一点,我已经尝试添加交换文件,我不认为这是我的内存问题,因为有 4GB 的 RAM,我还添加了 3GB 更多。问题依旧
【解决方案2】:

经过大量 google 和检查后,我发现我的 system user ( ssh user ) 是在对操作系统资源的访问受限的情况下创建的。

我的用户配置文件位于/etc/security/limits.d/example_user.conf

example_user soft nproc 40
example_user hard nproc 40
example_user soft nofile 150
example_user hard nofile 150

我的解决方案:

我备份了文件,在/etc/security/limits.d/目录下删除,然后重启系统。

npm 命令现在成功运行。

我阅读此文档以了解错误。

limits.d configuration document

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2017-10-05
    • 2019-10-04
    • 2021-07-03
    相关资源
    最近更新 更多