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 root@10.211.x.x 

同步文件

從本地復制到遠程
# 拷貝文件
scp /home/test/test.txt root@192.168.0.2:/home/test/
# 拷貝目錄
scp -r /home/test/ root@192.168.0.2:/home/test/
從遠程復制到本地
# 拷貝文件
scp root@192.168.0.2:/home/test/ /home/test/test.txt
# 拷貝目錄
scp -r root@192.168.0.2:/home/test/ v/home/test/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM