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

20
我们从合作伙伴那里收到了一个与我们的API交互的前端(使用node.js构建),使用create-create-app构建。在从合作伙伴git克隆存储库后,npm start命令能够正常工作,我可以在本地测试与API的交互,没有任何问题。 在我的本地机器上,npm run build命令也可以正常工作,我能够使用serve build命令构建和运行应用程序。
问题出现在将存储库克隆到Amazon AWS EC2实例之后,我能够克隆存储库,但在运行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个回答

12

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

The build failed because the process exited too early. This probably means the system ran out of memory or someone calledkill -9on the process.(构建失败,可能是因为进程过早退出。这很可能是系统内存耗尽或者有人在进程上使用了kill -9命令。)

您可以在终端中运行命令top查看内存使用情况。


1
你好伙计,谢谢回复,这是 top 命令的输出: https://ibb.co/Cmr9gRJ你能看出是否有任何问题吗?感谢你的帮助。 - Richard Garcia
1
看起来你的RAM可用空间只有约110MB,根据我的经验,这对于较大的应用程序来说太少了(你正在运行的节点进程消耗的内存就差不多是这个数量)。你可以通过在另一个终端窗口中同时运行脚本并运行top命令来证明这是一个内存问题。如果Kib“Free”内存部分达到零(或接近零),那么你需要增加可用的RAM才能使命令正常运行。 - clovis1122
1
你好!再次感谢您的回复,我终于成功编译了这个项目,您是对的。我停止了所有正在运行的应用程序并重新编译了create-react-app,它起作用了。我能否只增加交换空间来解决这个问题?还是需要增加更多内存?每次部署新版本的react-act时关闭所有进程现在不太方便。 - Richard Garcia
1
太好了!您需要增加更多的RAM来解决问题。如果有效,请将我的答案标记为已接受。 - clovis1122
完成了!非常感谢您的回答,我们创建了另一台内存更大的机器!非常感谢您的帮助。 - Richard Garcia
它可以使用越来越多的内存。npm 构建确实需要大量内存。 - Gokul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接