Node-Sass安裝失敗引發的思考

devsai發表於2018-04-13

在mac OS或liunx系統下,有時候在安裝node-sass時會出現,Permissions Errors

可能出現的情況是這樣:

loop reinstall


閱讀後你將得到什麼

  1. 你將成功的解決node-sass安裝不了苦惱(相同或類似的問題)
  2. 不僅僅是node-sass,其他模組如此類問題,同樣可以解決
  3. 你將獲得處理此類問題的,多種解決方案
  4. 你將瞭解到出現此類問題的原因,以及如何避免此類問題

錯誤分析

找到輸出資訊裡的關鍵詞user "root" does not have permission to access the dev dir

貌似是許可權問題,但有時候是root使用者了,為什麼會有許可權問題?

解決問題的方案有下面幾種:

方案一 新增引數(--unsafe-perm)

在安裝node-sass時,使用引數--unsafe-perm

例如:

npm install --unsafe-perm node-sass
複製程式碼

解析:

--unsafe-perm 在root下預設值為false,其他的預設值為true

設定為true,在run package script時會切換UID/GID 明確設定為false,在非root使用者下安裝會失敗

方案二 新增引數(--user=root)

在安裝node-sass時,使用引數--user=root

例如:

npm install --user=root node-sass
複製程式碼

該引數指定了再執行指令碼時使用的賬號(UID),預設是nobody

方案四 修改現有node的許可權

如果你是直接使用了已經編譯後的node版本

Node-Sass安裝失敗引發的思考

那麼你解壓之後的目錄許可權可能是這樣的

drwxrwxr-x  7 dev  dev  4.0K 3月  24 11:25 node-v8.10.0-linux-x64
複製程式碼

也可能是這樣的

drwxrwxr-x  7 500  500  4.0K 3月  24 11:25 node-v8.10.0-linux-x64
複製程式碼

這裡就需要修改node目錄的許可權為root

chown root:root node-v8.10.0-linux-x64
複製程式碼

方案四 重新安裝node(推薦使用nvm)

nvm是個node版本管理工具,可以方便的下載安裝node,並且可以方便的切換node版本

這是直接貼上nvm地址,如何安裝看文件

方案五 npm提供的解決方案(How to Prevent Permissions Errors)

 ## 建立.npm-global目錄
 mkdir ~/.npm-global
 ## 設定
 npm config set prefix '~/.npm-global'
 export PATH=~/.npm-global/bin:$PATH
 source ~/.profile

複製程式碼

通過上述方法的其中一種,就可以解決問題。

參考

相關文章