create-react-app 构建过程耗时太长

Posted

技术标签:

【中文标题】create-react-app 构建过程耗时太长【英文标题】:create-react-app build process take too long 【发布时间】:2019-06-07 10:39:45 【问题描述】:

我们从合作伙伴那里收到了一个前端,用于与我们使用 create-create-app 构建的 API(内置于 node.js)进行交互,在从我们的合作伙伴 git 克隆存储库之后, npm start 命令有效,我可以在本地测试与 API 交互的应用程序,完全没有问题。 同样在我的本地机器上,npm run build 命令效果很好,我能够使用serve build 命令构建和运行应用程序。

问题出现在将 repo 克隆到 Amazon AWS EC2 实例之后,我能够克隆 repo,但是在运行 npm install 之后,当运行 npm run build 时,该过程将永远停留在以下消息中:

sudo npm run build

> sensores@0.1.0 build /var/www/smartdots-frontend
> react-scripts build

Creating an optimized production build...

大约 20 分钟后,进程保持挂起状态,最后这是最后一条消息:

> sensores@0.1.0 build /var/www/smartdots-frontend
> react-scripts build

Creating an optimized production build...
The build failed because the process exited too early. This probably means the system ran out of memory or someone called `kill -9` on the process.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sensores@0.1.0 build: `react-scripts build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sensores@0.1.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/ubuntu/.npm/_logs/2019-01-12T21_26_31_254Z-debug.log

最后,这是日志:

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/local/bin/npm', 'run', 'build' ]
2 info using npm@6.5.0
3 info using node@v11.6.0
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle sensores@0.1.0~prebuild: sensores@0.1.0
6 info lifecycle sensores@0.1.0~build: sensores@0.1.0
7 verbose lifecycle sensores@0.1.0~build: unsafe-perm in lifecycle true
8 verbose lifecycle sensores@0.1.0~build: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/www/smartdots-frontend/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
9 verbose lifecycle sensores@0.1.0~build: CWD: /var/www/smartdots-frontend
10 silly lifecycle sensores@0.1.0~build: Args: [ '-c', 'react-scripts build' ]
11 silly lifecycle sensores@0.1.0~build: Returned: code: 1  signal: null
12 info lifecycle sensores@0.1.0~build: Failed to exec build script
13 verbose stack Error: sensores@0.1.0 build: `react-scripts build`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:301:16)
13 verbose stack     at EventEmitter.emit (events.js:188:13)
13 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:188:13)
13 verbose stack     at maybeClose (internal/child_process.js:978:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
14 verbose pkgid sensores@0.1.0
15 verbose cwd /var/www/smartdots-frontend
16 verbose Linux 4.4.0-1069-aws
17 verbose argv "/usr/bin/node" "/usr/local/bin/npm" "run" "build"
18 verbose node v11.6.0
19 verbose npm  v6.5.0
20 error code ELIFECYCLE
21 error errno 1
22 error sensores@0.1.0 build: `react-scripts build`
22 error Exit status 1
23 error Failed at the sensores@0.1.0 build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

我已经在几台机器上测试了npm run build,使用不同的操作系统,它总是运行良好,对此我真的很绝望,我尝试以 root 身份构建应用程序,更改文件夹权限和所有权,但没有任何效果,在另一台计算机上构建应用程序并在 AWS 机器上提供它也不起作用

 node --version
v11.6.0

 npm --version
6.5.0

create-react-app --version
2.1.3

package.json:


  "name": "sensores",
  "version": "0.1.0",
  "private": true,
  "dependencies": 
    "antd": "^3.11.3",
    "history": "^4.7.2",
    "moment": "^2.23.0",
    "pm2": "^3.2.8",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-draggable": "^3.1.1",
    "react-form": "^3.5.6",
    "react-loader-spinner": "^2.3.0",
    "react-redux": "^6.0.0",
    "react-router": "^4.3.1",
    "react-router-dom": "^4.3.1",
    "react-router-redux": "^4.0.8",
    "react-scripts": "^2.1.3",
    "reactstrap": "^6.5.0",
    "recharts": "^1.4.2",
    "redux": "^4.0.1",
    "redux-form": "^8.0.4",
    "redux-logger": "^3.0.6",
    "redux-saga": "^0.16.2",
    "redux-thunk": "^2.3.0",
    "serve": "^10.1.1",
    "styled-components": "^4.1.3",
    "url-search-params": "^1.1.0"
  ,
  "scripts": 
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "serve": "json-server --watch ./serverfake.json"
  ,
  "eslintConfig": 
    "extends": "react-app"
  ,
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]

【问题讨论】:

【参考方案1】:

听起来确实是内存问题,尤其是这一行:

The build failed because the process exited too early. This probably means the system ran out of memory or someone calledkill -9on the process..

您可以通过在终端中运行命令top 来检查它并查看内存使用情况。

【讨论】:

你好哥们,谢谢你的回复,这是top命令的输出:ibb.co/Cmr9gRJ你能告诉我有什么问题吗?感谢您的帮助 看起来您的 RAM 中有大约 110MB 可用,以我的经验,这对于大型应用程序来说太少了(您正在运行的节点进程仅消耗这一点)。您可以通过在另一个终端窗口中运行脚本时运行顶部来证明这是一个内存问题。如果 Kib “空闲”内存部分达到零(或关闭),那么您将需要增加可用 RAM 以使命令运行。 见鬼!再次感谢您的回复,我终于成功编译了项目,您是对的。我已经停止了每个正在运行的应用程序并再次编译了 create-react-app 并且它工作了我可以增加交换来解决这个问题吗?或者生病需要添加更多内存?每次我需要部署新版本的 react-act 时关闭所有进程现在不方便 很高兴听到!您需要添加更多 RAM 才能解决此问题。如果可行,请将我的回答标记为已接受。 完成!非常感谢您的回答,我们创建了另一台具有更多 RAM 的机器!非常感谢您的帮助。

以上是关于create-react-app 构建过程耗时太长的主要内容,如果未能解决你的问题,请参考以下文章

CLion 在构建后强制文件刷新,耗时太长

在 android studio 中,Gradle 同步构建模型耗时太长

create-react-app 如何在构建过程中将特定的 .ts 文件编译为 .js 文件?

iOS UIWebView loadRequest 耗时太长

OpenCV VideoWriter 耗时太长

MariaDB 创建的视图耗时太长