Node.js服務端圖片處理利器sharp.js安裝過程中遇到的問題總結

由於Sharp基於C++的libvips庫來實現,本地Mac開發完後在部署時安裝sharp模塊時會基於測試環境Liunx平臺編譯安裝,測試環境安裝時發現請求github下載libvips-8.9.1-linux-x64.tar.gz,所以只能失敗告終。後來看源碼和文檔發現sharp項目考慮周到優先使用緩存和使用sharp_dist_base_url參數,這樣可以先將libvips-8.9.1-linux-x64.tar.gz下載到內網。

npm緩存路徑使用npm config get cache 查詢。新建_libvips,把libvips-8.9.0-linux-x64.tar.gz放進去。

Using cached /root/.npm/_libvips/libvips-8.9.0-linux-x64.tar.gz,這樣安裝時就不會再請求了。

npm config set sharp_dist_base_url "https://hostname/path/"

或者 SHARP_DIST_BASE_URL=http://172.20.x.x npm i --unsafe-perm --allow-root

 

表面上看使用以上方法解決請求不到依賴包的問題事情就搞定了,但遠沒這麼簡單。

由於需要Liunx環境來安裝編譯sharp,自然想到用虛擬機或Docker,通過Parallels Desktop安裝下載好的CentOS-8.1.1911-x86_64-boot.iso,提示無法識別鏡像,沒道理啊。

後來多次嘗試發現可選擇其它選擇中的默認Linux來安裝但啓動不了系統,研究一翻把CD-ROM啓動指向到CentOS-8.1.1911-x86_64-boot.iso重啓就能使用CDROM來啓動安裝CentOS。

 

安裝完系統心想這下應該完美解決了,直接就上npm i sharp ,事情到這又是一堆error,又遇到npm安裝異常報錯,記錄如下。

1、gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

解決:npm config set python /path/to/executable/python2.7

2、stack Error: EACCES: permission denied, mkdir

由於安裝Linux使用的用戶root賬戶,也遇到異常提示。爲了避免這種情況,專門建一個用於運行 npm 的高權限用戶;要麼加 --unsafe-perm 參數,這樣就不會切換到 nobody 。

解決:npm i --unsafe-perm --allow-root

3、前面講過由於安裝sharp需要編譯C++ libvips,需要node-gyp

解決:npm install --global node-gyp

4、Error make:g++:not find

Linux安裝後沒有make需要安裝

解決:yum install -y make gcc-c++

5、sudo npm install 提示 sudo: npm:找不到命令。

由於npm和node是解壓安裝沒有安裝到系統/use/bin下,所以通過軟鏈解決

解決:

ln -s /home/soft/node-v10.6.0/bin/npm /usr/bin/npm

ln -s /home/soft/node-v10.6.0/bin/np /usr/bin/node

 

6、Mac 訪問Parallels Desktop虛擬機Linux

在虛擬機中使用ifconfig查詢IP後回到Mac登錄到Linux

ssh [email protected] 

同步文件

從本地複製到遠程
# 拷貝文件
scp /home/test/test.txt [email protected]:/home/test/
# 拷貝目錄
scp -r /home/test/ [email protected]:/home/test/
從遠程複製到本地
# 拷貝文件
scp [email protected]:/home/test/ /home/test/test.txt
# 拷貝目錄
scp -r [email protected]:/home/test/ v/home/test/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章