踩坑紀錄
創建Vue專案後,執行npm run serve
報錯”error:03000086:digital envelope routines::initialization error”
解決方案:
經過一番探索,終於找到了癥結所在:主要是nodeJs V17版本發布了OpenSSL3.0對算法和秘鑰大小增加了更為嚴格的限制,nodeJs v17之前版本沒影響,但V17和之後版本會出現這個錯誤。
一句話總結,說白了就是npm升級導致與 openssl 不兼容導致的初始化失敗,也就是node.js版本過高的原因造成的運行失敗。
- 方式一:
- 在package.json的scripts中新增
SET NODE_OPTIONS=--openssl-legacy-provider
添加前:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
添加後:
"scripts": {
"serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
注意:如果團隊中node版本不一致,不要將該package.json提交。
- 與第一種方法類似,在編輯器集成終端里,直接設置環境變量,進行控制(只能臨時解決)
找到package.json文件右鍵,在集成終端中打開後,直接輸入set NODE_OPTIONS=–openssl-legacy-provider回車,然後npm run serve重新運行項目即可。
// windows下
set NODE_OPTIONS=--openssl-legacy-provider
// linux下
export NODE_OPTIONS=--openssl-legacy-provider
- 方式二:更換node.js版本
轉載請注明來源,歡迎對文章中的引用來源進行考證,歡迎指出任何有錯誤或不夠清晰的表達。可以郵件至 b8954008@gmail.com