skip to Main Content

after building my react docker image I tried to run docker run image_name
and after that the log throw this error

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'
}

my docker file is as follows

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

I am expecting this might be a node version issue, but I am not quite sure about the error, can anybody explain what this error is about and how I can resolve? thanks

6

Answers


  1. Chosen as BEST ANSWER

    I changed node version node:16.3.0-alpine and it worked however can any body explain digital envelope routines please


  2. Node.js v17 moved to OpenSSL v3.0.

    You could try switching to v16, or set ENV NODE_OPTIONS="--openssl-legacy-provider" in your Dockerfile, or update your start script in package.json to use react-scripts --openssl-legacy-provider start (or similar depending on your specific start script).

    There is an issue you can follow here: https://github.com/facebook/create-react-app/issues/11708

    Login or Signup to reply.
  3. Check package.json, under the script I have,

    "scripts": {
    "start": "expo start",
    "android": "expo start –android",
    "ios": "expo start –ios",
    "web": "expo start –web" }

    in terminal run

    expo start -web

    Login or Signup to reply.
  4. After a deep search I come up with this solution.

    What was the issue?
    The issue was the difference between my Node Version and React js version.

    Node.js v18.4.0
    "react":"^16.12.0"

    Solution:

    1. Make Sure that you have nvm installed in you machine if you don’t here is the link Node Version Manager
    2. In your Project terminal type: nvm ls (You should see a list as showed below )
      nvm ls
    3. Type : nvm use v16.15.1 choose a version that fits you

    If you don’t have any nvm installed

    Note: After install nvm You MUST RESTART THE TERMINAL OR CLOSE AND OPEN in order to see nvm version

    Login or Signup to reply.
  5. Cause

    Before Node 17.x versions, It uses OpenSSL 2 version. NodeJS uses OpenSSL for hash functionality code. The OpenSSL 3 disables MD4, Due to that nodejs is broken in the latest nodejs versions.

    Solution

    1. Linux users

    export NODE_OPTIONS=–openssl-legacy-provider

    1. Windows users

    set NODE_OPTIONS=–openssl-legacy-provider

    1. You can add NODE_OPTIONS=–openssl-legacy-provider to npm scripts.
    Login or Signup to reply.
  6. This error happened to me after installing the latest Node version/18.15 on my machine while using angular v 12.2.14. So, I was supposed to uninstall the latest node and downgrade it to an older version/v14.21.3 which is compatible with the angular version. Used : https://unpkg.com/browse/@angular/[email protected]/package.json for compatibility check.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search