1. 程式人生 > 其它 >在vscode中執行npm及node命令,顯示無法將“npm”識別為 cmdlet、函式、指令碼檔案或可執行程式的名稱

在vscode中執行npm及node命令,顯示無法將“npm”識別為 cmdlet、函式、指令碼檔案或可執行程式的名稱

一、起因:

半年沒使用vue了,感覺對vue都快手生了,所以想用vue寫些demo,但是由於上個星期剛剛重新安裝系統,計算機的環境又被清空了,所以又苦逼的安裝了一下node環境與vue腳手架。

二、問題:

當一切安裝就緒時,在電腦自帶的cmd的視窗下面輸入npm指令,可以正常執行。

但是在vscode下面卻出現這個錯誤:

三、解決方法

這個問題,貌似我之前好像遇過,但是後來好像不知道怎麼解決了,由於之前剛剛開始學習vue,所以就把重心花在學習上面了,忽略這個問題的記錄,所以當出現這個問題時,我就覺得有點熟悉又陌生的感覺,所以我按常規操作,開啟瀏覽器,查了一下解決方案,但是好傢伙,答案千奇百怪,然而卻沒有一個適合我

1.有的教我新增環境變數,說是node的環境變數沒有加入到系統裡面,但是現在安裝的node,它都會預設追加到系統環境變數裡面,所以不是這個問題。

2.有的叫我以管理員身份執行,但是我本身就是以管理員身份登入的,但是我還是重新用管理員身份打開了vscode,發現還是沒有解決問題;

3.有的說是vscode預設建立的終端時powershell,得重新選擇cmd建立終端。但是powershell本身就是cmd的超集,所以貌似覺得這位博主在放屁,但是我沒有證據證明他在放屁,所以還是重新關掉vscode,重新以管理員身份執行,重新新建cmd終端,但是vscode的報錯變了,變成了:‘npm‘ 不是內部或外部命令,也不是可執行的程式 或批處理檔案

4.這位同學提出教我檢視vscode的當前策略

這個雖然也解決不了問題,但是算是擴充套件了一下知識面,所以我查了一下這個策略是啥?

執行策略

使用命令Get-ExecutionPolicy確定當前執行策略
Restricted指令碼不能執行 受限制的(預設設定)
Unrestricted允許所有的指令碼執行
RemoteSigned本地建立的指令碼可以執行,但從網上下載的指令碼不能執行
AllSigned僅當指令碼由受信任的釋出者簽名時才能執行。
Set-ExecutionPolicy以管理員身份修改策略

本地策略為Restricted,所有指令碼不能執行,受限制的,需繞過

繞過姿勢1powershell.exe -ExecutionPolicy Bypass -File .\test.ps1
繞過姿勢二powershell.exe -exec bypass -Command "& {Import-Module E:\Desktop\powershelll\test.ps1}"
繞過姿勢3powershell.exe -exec bypass -Command "& {Import-Module E:\Desktop\powershelll\test.ps1;InvokeAllChecks}"

所以至少在探索問題中,我學到了這個powershell的策略,瞭解了它的大概。 最後在上面都試過之後,發現都沒辦法解決我的問題,我最後重啟電腦,最後成功解決問題。

所以我覺得應該是vscode本身在讀取電腦環境變數配置中出現了疏漏,我猜測vscode每次開機,自動讀取電腦環境變數配置,然後再根據配置建立終端,所以沒有重啟電腦的情況下,剛剛安裝的node環境變數沒有被vscode得知,所以vscode會出現這個錯誤。當然這個只是我的一個猜測。

窮則獨善其身,達則兼濟天下……