分享一次惨痛的折腾经历
项目升级webpack无法编译成功
最近撸了一个上传头像的功能, 满怀激动地跑去vps上升级, 按照原来的套路升级, 结果一次又一次地编译失败.
一开始我以为是vps日常大姨妈(webpack用于生产环境的打包貌似非常占用资源, 导致不定时会出现进程被kill的情况), 结果仔细看log, 有句提示大概如下:
Make sure you install latest node....
难道因为之前用过了8.x开发的缘故吗? 我当时是这么想的, 于是切换8.x来进行编译. 结果编译报错了. 详细错误大概如下
4 verbose stack Error: blog-react@1.0.0 build: `gulp && webpack -p`
14 verbose stack Exit status 137
14 verbose stack at EventEmitter.<anonymous> (/root/.nvm/versions/node/v8.0.0/lib/node_modules/npm/lib/utils/lifecycle.js:283:16)
14 verbose stack at emitTwo (events.js:125:13)
14 verbose stack at EventEmitter.emit (events.js:213:7)
14 verbose stack at ChildProcess.<anonymous> (/root/.nvm/versions/node/v8.0.0/lib/node_modules/npm/lib/utils/spawn.js:40:14)
14 verbose stack at emitTwo (events.js:125:13)
14 verbose stack at ChildProcess.emit (events.js:213:7)
14 verbose stack at maybeClose (internal/child_process.js:887:16)
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:208:5)
15 verbose pkgid blog-react@1.0.0
16 verbose cwd /mypro/blog-react/client
17 verbose Linux 3.10.0-327.18.2.el7.x86_64
18 verbose argv "/root/.nvm/versions/node/v8.0.0/bin/node" "/root/.nvm/versions/node/v8.0.0/bin/npm" "run" "build"
19 verbose node v8.0.0
20 verbose npm v5.0.0
21 error code ELIFECYCLE
22 error errno 137
23 error blog-react@1.0.0 build: `gulp && webpack -p`
23 error Exit status 137
24 error Failed at the blog-react@1.0.0 build script.
好吧, 我先重新npm install
试试, 结果还是一样
删除node_modules
再重新install试试, 结果同上, 于是噩梦在这里开始了...
因为8.x的npm
版本是5.x的, 那我再还原回原来的环境咯. 这时候重新npm install
, 总是在extract
阶段就被kill了
这时我陷入了一个两难的窘境: 用8.x吧, 编译生产脚本报错(编译开发的脚本是可以的); 用6.x则是install阶段都废了
google了很久, 还是没能找到8.x为什么会编译失败, 于是我还是主攻6.x吧
直接贴出解决方案了, 要么加配置要么加swap, 穷屌只能选择swap了
最后再说明一下, 我也尝试过切换代码到原来的版本, 不管是8.x还是6.x是可以顺利编译的, 但是新的代码在我的windows机器上是可以顺利编译出来了, 但是在centos7下就不行, 哎!!!
关于npm5.x在windows
我也尝试删除node_modules
后使用npm5.x来重新安装我的依赖包, 结果发现有些旧的依赖包编译的时候提示缺少模块了. 原因未明