node版本升級后項目跑不起來的幾種報錯及解決方案
版本號
| 原版本 | 新版本 |
|---|---|
| node@16.20.2 | node@22.17.0 |
| pnpm@8.15.9 | pnpm@10.12.3 |
新版本跑項目歷程
pnpm i
等待下載完依賴后,發(fā)現(xiàn)有這一段warning

忽略這一warning直接跑項目
pnpm run start:stage
報錯1:-4058,找不到esbuild

這時候去查,得知都使用這個命令node ./node_modules/esbuild/install.js手動安裝一下esbuild就行了,于是照貓畫虎

還是報錯?。。?!
果然不止我一個人這樣照貓畫虎,有人指出需要注意path

報錯1解決方案
正確的命名應(yīng)該是:
node ./node_modules/.pnpm/esbuild@0.8.57/node_modules/esbuild/install.js

執(zhí)行該命令沒有報錯,應(yīng)該也是安裝成功了。
以為萬無一失了,跑項目:
pnpm run start:stage
我沒事,我很好。。。
報錯2:Error: error:0308010C:digital envelope routines::unsupported

又去查文章,找到一篇疑似翻譯的文章
抄筆記:
這個報錯大致原因是:由于Node.js和OpenSSL之間的兼容性問題,在Node.js 17版本以及更高版本中,OpenSSL 3.0中默認(rèn)禁用了某些加密功能。
需要執(zhí)行set NODE_OPTIONS=--openssl-legacy-provider命令
于是分開執(zhí)行命令

發(fā)現(xiàn)還是不行,沒事噠沒事噠,沒有什么困難是打敗不了我的
嘗試一起執(zhí)行set NODE_OPTIONS=--openssl-legacy-provider && pnpm run start:stage

嗯,還是不行
有些人可能到這一步不會出現(xiàn)問題,我是因為在bash命令行中執(zhí)行的,在cmd或者PowerShell中不一定行不通。
報錯2解決方案1
我還得繼續(xù),于是把set NODE_OPTIONS=--openssl-legacy-provider加到package.json中
"start:stage": "set NODE_OPTIONS=--openssl-legacy-provider && npx ……",
再執(zhí)行
pnpm run start:stage
發(fā)現(xiàn)成功跑起來了
小小腦袋大大疑問
疑問:為什么set NODE_OPTIONS=--openssl-legacy-provider && pnpm run start:stage這樣不行,但是把set寫進(jìn)package.json可以?


在 package.json 中,整個命令鏈?zhǔn)窃?nbsp;同一個 shell 進(jìn)程 中順序執(zhí)行的。
報錯2解決方案2
但是我不想改package.json文件,AI給出方案,我挑了一個最簡單的:
npx cross-env NODE_OPTIONS=--openssl-legacy-provider pnpm run start:stage
總結(jié)
1.執(zhí)行命令解決esbuild問題(注意路徑)
node ./node_modules/.pnpm/esbuild@0.8.57/node_modules/esbuild/install.js
解決esbuild還有一個方法,我目前沒去嘗試,可以參考文章去試試

2.執(zhí)行命令解決OpenSLL3.0加密兼容性問題并運行項目
set NODE_OPTIONS=--openssl-legacy-provider && pnpm run start:stage
或者
npx cross-env NODE_OPTIONS=--openssl-legacy-provider pnpm run start:stage
到此這篇關(guān)于node版本升級后項目跑不起來的幾種報錯及解決方案的文章就介紹到這了,更多相關(guān)node版本升級后項目跑不起來內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何使用Node.js連接數(shù)據(jù)庫ORM
這篇文章主要為大家介紹了詳解如何使用Node.js連接數(shù)據(jù)庫ORM示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
詳解Node.js中path模塊的resolve()和join()方法的區(qū)別
這篇文章主要介紹了詳解Node.js中path模塊的resolve()和join()方法的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
Node.js使用bcrypt-pbkdf實現(xiàn)密碼加密
在這個數(shù)字時代,保護(hù)用戶密碼的重要性不言而喻,作為一名資深的前端開發(fā)工程師和技術(shù)博客作者,今天我將帶你詳細(xì)了解如何在 Node.js 環(huán)境中利用 bcrypt-pbkdf 模塊進(jìn)行密碼的哈希處理,確保你的應(yīng)用安全性得到有效提升,需要的朋友可以參考下2024-05-05
Ubuntu 16.04 64位中搭建Node.js開發(fā)環(huán)境教程
如果想要在Ubuntu 16.04上安裝Node.js的話,這篇文章對你來說肯定很重要。Node.js從本質(zhì)上來說就是一個運行在服務(wù)端上的封裝好了輸入輸出流的javascript程序。本文給大家詳細(xì)介紹了在Ubuntu 16.04 64位搭建Node.js開發(fā)環(huán)境的步驟,有需要的朋友們可以參考學(xué)習(xí)。2016-10-10
Node.js學(xué)習(xí)之內(nèi)置模塊fs用法示例
這篇文章主要介紹了Node.js學(xué)習(xí)之內(nèi)置模塊fs用法,結(jié)合實例形式詳細(xì)分析了node.js內(nèi)置模塊fs的基本功能、用法與相關(guān)操作注意事項,需要的朋友可以參考下2020-01-01
nodejs dgram模塊廣播+組播的實現(xiàn)示例
這篇文章主要介紹了nodejs dgram模塊廣播+組播的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Dapr+NestJs編寫Pub及Sub裝飾器實戰(zhàn)示例
這篇文章主要為大家介紹了Dapr+NestJs編寫Pub及Sub裝飾器的實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

