背景:头头让我部署一个 eo_linker api 管理工具的开源版。我要对其进行编译部署,以便进行二次开发
服务器环境: centos
部署步骤:
-
下载源码 :https://github.com/eolinker/eoLinker-AMS-3.5.1-for-PHP
-
后端的代码不用改,直接可以运行
-
前端采用 Angular。
坑来了
坑都集中在前端源码的编译上。
-
readme 文档无信息:根据前端源码的 readme 文档, 并没有介绍编译的步骤。
-
包安装失败:
- 万事无脑先来一遍
npm install
。然鹅,报错! - 换一个
cnpm install
, 一样报错。 - 只能换
yarn
试试。
- 万事无脑先来一遍
-
安装 yarn 失败:
- 因为服务器没装 yarn ,故根据 yarn 官方文档安装 yarn。
- 安装结果报错,报错信息是:
required nodejs
,我他喵 node 都装了几年了 - 在
/usr/local/bin
下建了软链接链到node
命令,这样终端打nodejs
就跟能调出node
了。 - 再次安装 yarn ,结果还是找不到
nodejs
失败,猝,放弃。
-
分析
npm install
报错信息- 回过头来看
npm install
的报错信息,node-sass 模块下载失败 - 搜索下,网上说 node-sass 的地址经常抽风,换成淘宝的地址试试。
- 还是不行,经过一番艰辛的排查,发现是 package.json 中要求的 xx 包所依赖的 node-sass 版本不支持 node8 以上
- 回过头来看
现在有两条路可以走,一是升级 node-sass 版本(但是可能会让项目跑不了);二是安装 node7 (但是服务器上跑的 node 服务都是基与 node8 的,降到 node7 可能会出问题)
-
安装多个 node 版本
- 经过思考比较,最终选择安装不同版本 node 的方案
- 既要存在 node7 也要保留当前的 node8,调查后发现有以下几个方案
- n 管理(最终选择了该方案,方便快速,但不是最佳方案,最佳应该是运行项目,自动选择 node7)
- nvm 管理
- docker 技术
- 最终解决了
npm install
失败的问题。
-
npm run build
失败- 看到 package.json 文件中有 build 的指令,就跑了下,结果失败。
- 看了 build 的指令
"build": "babel src -d lib"
,坑阿,这只是用 babel 转下 src 文件,并不是 build
-
终于找到前端部署的官方文档
- 在经历了一定艰苦奋战后,我才想起谷歌。去搜索了一番,找来了官方二次开发的文档
- 原来这坑爹的官方文档在他的 2.0 版本的 readme 中(我装的是 3.5 版)
- 根据文档,我还要
bower install
(bower 又是什么鬼)
-
bower install
失败- 根据报错信息提示,git 有问题,网上搜了下: git 版本太低
- 安装最新 git 版本,下载源码编译安装,等了很久,终于安装好
- 再次
bower install
,结果失败,报错信息是下载 github 包失败,推测原因是没有把本机公钥添加到 github 帐户上,git clone 失败,于是把本机公钥添加到 github 帐户上。在服务器随便 git clone 一个包成功 - 再次
bower install
,结果失败。报错信息git ssl connect error
。网上搜了几个解法方案,最终配置下 git:git config –global http.sslversion tlsv1
.
填坑之路结束
后面思考补充下从此次填坑之旅学到了什么。
网友评论