執行Vue項目報錯error_0308010C

  1. 踩坑紀錄

踩坑紀錄

創建Vue專案後,執行npm run serve 報錯”error:03000086:digital envelope routines::initialization error”

解決方案:
經過一番探索,終於找到了癥結所在:主要是nodeJs V17版本發布了OpenSSL3.0對算法和秘鑰大小增加了更為嚴格的限制,nodeJs v17之前版本沒影響,但V17和之後版本會出現這個錯誤。
一句話總結,說白了就是npm升級導致與 openssl 不兼容導致的初始化失敗,也就是node.js版本過高的原因造成的運行失敗。

  • 方式一:
  1. 在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提交。

  1. 與第一種方法類似,在編輯器集成終端里,直接設置環境變量,進行控制(只能臨時解決)

找到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