背景:頭頭讓我部署一個 eo_linker api 管理工具的開源版。我要對其進行編譯部署蛤肌,以便進行二次開發(fā)
服務器環(huán)境: centos
部署步驟:
下載源碼 :https://github.com/eolinker/eoLinker-AMS-3.5.1-for-PHP
后端的代碼不用改查近,直接可以運行
前端采用 Angular竿奏。
坑來了
坑都集中在前端源碼的編譯上荠耽。
readme 文檔無信息:根據(jù)前端源碼的 readme 文檔, 并沒有介紹編譯的步驟。
-
包安裝失敗:
- 萬事無腦先來一遍
npm install
豺谈。然鵝郑象,報錯! - 換一個
cnpm install
, 一樣報錯茬末。 - 只能換
yarn
試試厂榛。
- 萬事無腦先來一遍
-
安裝 yarn 失敗:
- 因為服務器沒裝 yarn ,故根據(jù) yarn 官方文檔安裝 yarn丽惭。
- 安裝結(jié)果報錯击奶,報錯信息是:
required nodejs
,我他喵 node 都裝了幾年了 - 在
/usr/local/bin
下建了軟鏈接鏈到node
命令责掏,這樣終端打nodejs
就跟能調(diào)出node
了柜砾。 - 再次安裝 yarn ,結(jié)果還是找不到
nodejs
失敗换衬,猝痰驱,放棄。
-
分析
npm install
報錯信息- 回過頭來看
npm install
的報錯信息瞳浦,node-sass 模塊下載失敗 - 搜索下担映,網(wǎng)上說 node-sass 的地址經(jīng)常抽風,換成淘寶的地址試試叫潦。
- 還是不行,經(jīng)過一番艱辛的排查蝇完,發(fā)現(xiàn)是 package.json 中要求的 xx 包所依賴的 node-sass 版本不支持 node8 以上
- 回過頭來看
現(xiàn)在有兩條路可以走,一是升級 node-sass 版本(但是可能會讓項目跑不了)诅挑;二是安裝 node7 (但是服務器上跑的 node 服務都是基與 node8 的四敞,降到 node7 可能會出問題)
-
安裝多個 node 版本
- 經(jīng)過思考比較泛源,最終選擇安裝不同版本 node 的方案
- 既要存在 node7 也要保留當前的 node8拔妥,調(diào)查后發(fā)現(xiàn)有以下幾個方案
- n 管理(最終選擇了該方案,方便快速达箍,但不是最佳方案没龙,最佳應該是運行項目,自動選擇 node7)
- nvm 管理
- docker 技術
- 最終解決了
npm install
失敗的問題缎玫。
-
npm run build
失敗- 看到 package.json 文件中有 build 的指令硬纤,就跑了下,結(jié)果失敗赃磨。
- 看了 build 的指令
"build": "babel src -d lib"
,坑阿筝家,這只是用 babel 轉(zhuǎn)下 src 文件,并不是 build
-
終于找到前端部署的官方文檔
- 在經(jīng)歷了一定艱苦奮戰(zhàn)后邻辉,我才想起谷歌溪王。去搜索了一番腮鞍,找來了官方二次開發(fā)的文檔
- 原來這坑爹的官方文檔在他的 2.0 版本的 readme 中(我裝的是 3.5 版)
- 根據(jù)文檔,我還要
bower install
(bower 又是什么鬼)
-
bower install
失敗- 根據(jù)報錯信息提示莹菱,git 有問題移国,網(wǎng)上搜了下: git 版本太低
- 安裝最新 git 版本,下載源碼編譯安裝道伟,等了很久迹缀,終于安裝好
- 再次
bower install
,結(jié)果失敗蜜徽,報錯信息是下載 github 包失敗祝懂,推測原因是沒有把本機公鑰添加到 github 帳戶上,git clone 失敗拘鞋,于是把本機公鑰添加到 github 帳戶上嫂易。在服務器隨便 git clone 一個包成功 - 再次
bower install
,結(jié)果失敗掐禁。報錯信息git ssl connect error
怜械。網(wǎng)上搜了幾個解法方案,最終配置下 git:git config –global http.sslversion tlsv1
.
填坑之路結(jié)束
后面思考補充下從此次填坑之旅學到了什么傅事。