Node.jsのバージョンをアップデートすると、Vue.js(Nuxt)アプリのビルド時にこれを言われ、npm run dev
が失敗するようになってしまいました。
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
環境
- Apple Silicon (M1)
- macOS Venture
- Node.js v18.20.0
- Vue 2.6.14
- Nuxt v2.15.8
2つの解決方法
(1) 一時的な解決方法
以下のコマンドを叩くと、とりあえずすぐ動きます。
export NODE_OPTIONS=--openssl-legacy-provider
また、package.json に追加しておくのも良いでしょう。
"scripts": {
"build": "node --openssl-legacy-provider npm run build"
}
私はNuxt v2環境なので、package.json を以下のように記述しました。scriptsのdevとbuildを変更しました。
"scripts": {
"dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt",
"build": "NODE_OPTIONS=--openssl-legacy-provider nuxt build"
}
これで、ふつうに npm run dev
しても動作するようになりました。
(2) 本質的な解決方法: Node.jsの最新版へのアップデート
Node.jsを最新版にアップデートすると解決するようです。(試していません)
しかし、そんなに簡単にアップデートするわけにはいかない事情もあるでしょうから、package.jsonにビルドコマンドに入れておくのが良いかもしれません。
以上です!