Node.JS v.17でERR_OSSL_EVP_UNSUPPORTED

Vue.JS

node.jsの最新dockerイメージでVue.JSを起動させようとしたら、以下のようなエラーになった


Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at module.exports (/usr/src/app/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/usr/src/app/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/usr/src/app/node_modules/webpack/lib/NormalModule.js:471:10)
    at /usr/src/app/node_modules/webpack/lib/NormalModule.js:503:5
    at /usr/src/app/node_modules/webpack/lib/NormalModule.js:358:12
    at /usr/src/app/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/usr/src/app/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at Array. (/usr/src/app/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/usr/src/app/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /usr/src/app/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
    at /usr/src/app/node_modules/graceful-fs/graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v17.0.1

イマイチ意味が良くわからないのですが、このバージョンのNodeは新しいOpenSSLを使うので、古いモジュールだとエラーになるっぽいです。

ざっと見てみましたが、古いバージョンのSSLに対応するには、node.jsをオプション付けてビルドしなおせ!ということみたいです。
オプションを付けて起動してもいいらしいことも書いてあったのですが、VueJSでやる方法が良くわかりませんでした。

おいおいまじかよ。
こういうの面倒だからDocker使ってるんだけど…。
Node.JSってバージョン違いによるトラブルがほんとに多いんですよね。

解決方法(解決してないけど)

解決方法としては、OpenSSL3.0入れればいいんじゃない?とも思いましたが、出たばかりなのでベースのOS(alpine)での情報がない・・・というか、たぶんソースでインストールしてビルドしないとダメなのでそれもまた面倒。

ということで、Nodeのバージョン(Dockerイメージ)を下げました。

FROM node: current-alpine (2021年11月現在ではNode.js v17になる)

こちらに変更
FROM node:16-alpine3.11

どうも、Node.JS系の最新の系統のライブラリはトラブルが多いので困る。

 

基礎から学ぶ Vue.js | MIO | 工学 | Kindleストア | Amazon
AmazonでMIOの基礎から学ぶ Vue.js。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。
Vue.js 3 超入門 | 掌田津耶乃 | 工学 | Kindleストア | Amazon
Amazonで掌田津耶乃のVue.js 3 超入門。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。
タイトルとURLをコピーしました