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系の最新の系統のライブラリはトラブルが多いので困る。
Amazon.co.jp
Amazon.co.jp