1. 程式人生 > 實用技巧 >npm 許可權不足問題及 windows terminal 安裝使用

npm 許可權不足問題及 windows terminal 安裝使用

在命令列視窗使用 npx 建立 react 專案的時候,報錯如下圖所示。

百度一搜,很多都是說無法啟動 cmd 命令的原因,系統變數加入 cmd 所在路徑 C:\WINDOWS\system32 即可。可是新增到系統變數之後還是有這樣的問題,後來發現可能是許可權的問題,當我使用管理員許可權執行 npx create-react-app test 的時候就可以完全執行完畢。可是為什麼之前 npm / npx 建立應用的時候沒有啥問題呢?暫時不明覺厲。那如何為 npm 設定全域性的管理員許可權呢?有的文章說重灌 node 即可,但是我重灌了好幾次都沒啥用,還是一樣的問題。。。可能重灌系統可以吧!我最後的解決方法是:使用 windows terminal 這個命令列工具進行相關管理員許可權的 npm 操作。

windows terminal 安裝使用

windows terminal 是微軟與2019年推出的面向 win10 的新的命令列程式,我們可以通過微軟應用商店 或者從Github下載原始碼自行編譯安裝。這一程式把目前Windows上的PowerShell、CMD以及Windows Linux(WSL)三大環境實現了統一。

Windows下可以實現sudo一樣的命令,來快速地對某一個標籤頁開啟管理者許可權。這裡要介紹的gsudo就可以實現我們所要的功能。

安裝gsudo

Gsudo提供了多種安裝方式,包括ScoopChocolatey和Powershell安裝。

由於Powershell安裝方式簡單快捷,所以這裡使用Powershell進行安裝。

首先開啟Windows Terminal,建立Powershell標籤頁,執行下述程式碼。

PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"

安裝過程會詢問你是否打算使用 sudo 作為 gsudo 的別名,這裡可以根據個人需要進行選擇。
執行結尾顯示 Done 即表明安裝完成.

配置Windows Terminal

安裝成功後,在Windows Terminal中使用 Ctrl+,

,或選擇

開啟settings.json檔案,並在list列表中新增設定項:

"list": [
  {
      "guid": "{41dd7a51-f0e1-4420-a2ec-1a7130b7e950}",
      "name": "Windows PowerShell Elevated",
      "commandline": "gsudo.exe powershell.exe",
      "hidden": false,
      "colorScheme": "Solarized Dark",
      "fontFace": "Fira Code",
      "icon" : "https://i.imgur.com/Giuj3FT.png"
  },
  //...
]

其中,icon為標籤頁顯示的圖示,colorScheme為標籤頁的顏色,可以根據微軟提供的文件進行修改

設定完成後,重啟 Powershell / windows terminal,即可正常使用,在新增標籤頁的時候,使用 Ctrl+Shift+1 即可建立管理員身份的 Powershell.

同時,在普通 Powershell 視窗,也可以通過執行sudo命令為標籤頁賦予管理員身份.

新增Windows Terminal到滑鼠右鍵選單

測試變數

下面的兩個變數後面的操作需要使用到。所以,先測試下是否正常。

echo %USERPROFILE%



echo %LOCALAPPDATA%

如果有報錯,接下來的操作,請把對應的部分進行替換。

%USERPROFILE%` 替換成 `C:\Users\[userName]`
`%LOCALAPPDATA%` 替換成 `C:\Users\[userName]\AppData\Local

注意 [userName]為自己的使用者名稱

image

建立圖示

從以下地址下載圖示

圖示ico下載 , 開啟網址,滑鼠右鍵儲存到電腦。

開啟命令列,輸入

mkdir "%USERPROFILE%\AppData\Local\terminal"

這個命令是建立一個terminal資料夾,把下載的圖示ico複製到這個資料夾。

寫入登錄檔

建立一個txt文件,並把檔字尾改為reg。文件的名字可自己建立,字尾名不可以錯。右鍵選單出現Windows Terminal有兩種方法。一種是按shift+ 右鍵,另一種是直接右鍵

shift+ 右鍵

把下面的內容複製到reg去

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows Terminal"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"
"Extended"=""
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\[user_name]\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

注意:請把[user_name]改成自己電腦的使用者名稱

儲存 reg 檔案之後需要雙擊將配置寫入登錄檔中

右鍵

把下面的內容複製到reg去

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="%USERPROFILE%\\AppData\\Local\\terminal\\wt_32.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\[user_name]\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

注意:請把[user_name]改成自己電腦的使用者名稱

儲存 reg 檔案之後需要雙擊將配置寫入登錄檔中

修改Windows Terminalprofile.json

開啟profile.json

startingDirectory改為null,沒有的自己建立一個。

照著上面的方法操作,相信右鍵選單已經出現Windows Terminal的入口了。

參考:

報錯記錄 |npm start 報錯 Error: spawn cmd ENOENT

Windows Terminal 使用管理員身份建立標籤頁

新增Windows Terminal到滑鼠右鍵選單