docker 错误:错误:0308010 C:数字信封例程::新哈希不支持(节点:内部/加密/哈希:71:19)

xqkwcwgp  于 2022-11-03  发布在  Docker
关注(0)|答案(3)|浏览(237)

在构建了我的react docker映像之后,我尝试运行docker run image_name,之后日志抛出了这个错误

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:133:10)
    at module.exports (/app/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:417:16)
    at /app/node_modules/webpack/lib/NormalModule.js:452:10
    at /app/node_modules/webpack/lib/NormalModule.js:323:13
    at /app/node_modules/loader-runner/lib/LoaderRunner.js:367:11
    at /app/node_modules/loader-runner/lib/LoaderRunner.js:233:18
    at context.callback (/app/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at /app/node_modules/babel-loader/lib/index.js:59:103 {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

我的docker文件如下

FROM node:18-alpine
EXPOSE 3000
WORKDIR /app
COPY ./frontend/package.json .
RUN npm install
COPY ./frontend .
COPY ./images .
CMD ["npm", "start"]

我预计这可能是一个节点版本问题,但我不是很确定的错误,谁能解释这个错误是什么,我可以如何解决?谢谢

vwoqyblh

vwoqyblh1#

将Node.js v17移至OpenSSL v3.0。
您可以尝试切换到v16,或在Dockerfile中设置ENV NODE_OPTIONS="--openssl-legacy-provider",或在package.json中更新start脚本以使用react-scripts --openssl-legacy-provider start(或类似操作,具体取决于您的特定启动脚本)。
这里有一个问题,您可以关注:https://github.com/facebook/create-react-app/issues/11708

ghg1uchk

ghg1uchk2#

我改变了节点版本node:16.3.0-alpine,它工作了,但是任何人都可以解释digital envelope routines

uz75evzq

uz75evzq3#

检查package.json,在我的脚本下,
“脚本”:{“开始”:“世博会开始”、“安卓”:“世博会开始--安卓”、“ios”:“Expo启动-ios”,“web”:“博览会开始--网页”}
在终端运行中
博览会开始-网页

相关问题