Node.js16.15.1的一個(gè)報(bào)錯(cuò)以及解決方案分享
前言
最近在進(jìn)行Node.js的下載安裝和環(huán)境的配置,在官網(wǎng)上下載了LTS版本16.15.1,沒想到在后續(xù)的使用中出現(xiàn)一種報(bào)錯(cuò)。
例如,在命令提示符窗口中輸入npm -v 想要查看npm的版本號(hào):

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead
關(guān)于這個(gè)報(bào)錯(cuò),我一開始的解決方案是將Node.js安裝目錄下的npm.cmd文件第12行的prefix -g 改成prefix --location=global,之后再在命令提示框中輸入npm -v確實(shí)不報(bào)錯(cuò)了,我就以為解決了,沒想到有小伙伴反映git bash中運(yùn)行仍會(huì)報(bào)錯(cuò),我在命令提示符窗口測試的時(shí)候輸入npm install express -g 發(fā)現(xiàn)確實(shí)問題沒有完全解決。(如果你按之前的方案把npm.cmd文件改了,建議還是先改回來吧······)
在查找解決方案的時(shí)候,我發(fā)現(xiàn)最新版本的npm已經(jīng)發(fā)布了一個(gè)補(bǔ)丁來刪除這條棄用警告(詳情見https://github.com/npm/statusboard/issues/518),也就是說在你所安裝的 node 版本和最新版 npm 兼容的前提下我們升級(jí)到最新版的npm就可以解決問題了。于是我興沖沖地踩了又一個(gè)坑,就是直接在命令提示框輸入npm install -g npm 。但其實(shí),在 Windows 上升級(jí) npm 需要手動(dòng)步驟以確保 PowerShell/CMD 找到新版本的 npm 。(感謝這個(gè)帖子的一個(gè)評(píng)論幫助我定位了問題:https://stackoverflow.com/questions/72401421/npm-warn-config-global-global-local-are-deprecated-use-location-glo/72477810#72477810)
準(zhǔn)備工作
開始之前有三個(gè)問題要注意:
一是必須先完成環(huán)境變量的配置,否則后面會(huì)出現(xiàn)類似這種報(bào)錯(cuò):
npm-windows-upgrade : 無法將“npm-windows-upgrade”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。請(qǐng)檢查名稱的拼寫,如果包括路徑,請(qǐng)確保路徑正確,然后再試一次。
所在位置 行:1 字符: 1
+ npm-windows-upgrade
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (npm-windows-upgrade:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
二是可能你的node.js安裝文件夾存在權(quán)限問題,后續(xù)可能出現(xiàn)類似這種報(bào)錯(cuò):
Error: EPERM: operation not permitted, open 'D:\Program Files\nodejs\node_global\_logs\2022-06-11T18_14_51_227Z-debug-0.log' npm WARN logfile could not be created: Error: EPERM: operation not permitted, open 'D:\Program Files\nodejs\node_global\_logs\2022-06-11T18_14_52_917Z-debug-0.log'
以防萬一,建議還是先將權(quán)限打開(如果你的當(dāng)前用戶是管理員可以略過下面添加權(quán)限的步驟):
1、打開安裝文件夾所在根目錄,我的是在D盤,右鍵點(diǎn)擊安裝文件夾,點(diǎn)擊“屬性”:

2、點(diǎn)擊“安全”,選擇編輯:

3、點(diǎn)擊該用戶,我嫌麻煩,就直接勾選下方的“完全控制”:

4、點(diǎn)擊“應(yīng)用”后點(diǎn)擊“確定”:

5、再點(diǎn)擊“確定”退出:

注意:這個(gè)步驟有的小伙伴會(huì)報(bào)一個(gè)錯(cuò):

這種情況下我們直接進(jìn)入文件夾按照上面的步驟改掉node_cache和node_global兩個(gè)文件夾的權(quán)限改了即可(上面全改也只是為了方便)。
三是確保自己node.js的安裝文件夾不含中文字符(這個(gè)在安裝階段就應(yīng)該注意),否則有可能引發(fā)下面問題:

核心解決方案
準(zhǔn)備工作做完后,核心解決方案如下:
首先,在桌面任務(wù)欄的搜索框內(nèi)輸入“cmd”,點(diǎn)擊“以管理員身份運(yùn)行”,以免后續(xù)操作權(quán)限不足導(dǎo)致操作失?。?/p>

然后,在命令提示符窗口輸入npm install -g npm-windows-upgrade :

關(guān)閉窗口后,找到Windows PoweShell,右鍵,點(diǎn)擊“以管理員身份運(yùn)行”:

接著在PowerShell中輸入set-ExecutionPolicy RemoteSigned ,按下回車后會(huì)顯示是否要更改執(zhí)行策略的選項(xiàng);我們輸入Y 后按下回車;接著輸入npm-windows-upgrade ;接著會(huì)顯示各個(gè)版本,用方向鍵↑ ↓ 加以選擇,不過默認(rèn)是最高的8.12.1,就直接按回車就好了。稍等片刻,就完成更新了:

測試
我們在命令提示框中輸入npm -v,可以看到,即使沒更改npm.cmd文件,也不會(huì)報(bào)錯(cuò)了:

接著我又輸入了npm install express -g 進(jìn)行測試,仍然不會(huì)報(bào)錯(cuò)。
至此,該問題已解決。
總結(jié)
到此這篇關(guān)于Node.js16.15.1的一個(gè)報(bào)錯(cuò)以及解決的文章就介紹到這了,更多相關(guān)Node.js16.15.1報(bào)錯(cuò)及解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js實(shí)現(xiàn)在目錄中查找某個(gè)字符串及所在文件
這篇文章主要介紹了Node.js實(shí)現(xiàn)在目錄中查找某個(gè)字符串及所在文件,文中代碼簡潔,而且速度相當(dāng)?shù)目?需要的朋友可以參考下2014-09-09
NodeJS Web應(yīng)用監(jiān)聽sock文件實(shí)例
這篇文章主要介紹了NodeJS Web應(yīng)用監(jiān)聽sock文件實(shí)例,本文講解 NodeJS 的 TCP 和 HTTP 監(jiān)聽 Domain Socket 文件例子,需要的朋友可以參考下2015-02-02
node.js連接mongoDB數(shù)據(jù)庫 快速搭建自己的web服務(wù)
這篇文章主要為大家詳細(xì)介紹了node.js連接mongoDB數(shù)據(jù)庫,如何快速搭建自己的web服務(wù),感興趣的小伙伴們可以參考一下2016-04-04
node中IO以及定時(shí)器優(yōu)先級(jí)詳解
這篇文章主要給大家介紹了關(guān)于node中IO以及定時(shí)器優(yōu)先級(jí)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
從零開始學(xué)習(xí)Node.js系列教程三:圖片上傳和顯示方法示例
這篇文章主要介紹了Node.js圖片上傳和顯示方法,結(jié)合實(shí)例形式分析了nodejs基于http傳輸圖片文件及顯示圖片的相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下2017-04-04
node.js express框架實(shí)現(xiàn)文件上傳與下載功能實(shí)例詳解
這篇文章主要介紹了node.js express框架實(shí)現(xiàn)文件上傳與下載功能,結(jié)合具體實(shí)例形式詳細(xì)分析了node.js express框架針對(duì)文件上傳與下載的前后臺(tái)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-10-10

