Chyba s docker a reagovat, digitální obálky rutiny::nepodporované

0

Otázka

Mám se zapsal do docker kurzu a instruktor poskytl startovací projekt s poněkud starý reagovat kódu.

Jsem dockerized reagovat projektu, tady je jednoduchý Dockerfile:

FROM node

WORKDIR /app

COPY package.json .

RUN npm i

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

Pak jsem postavil obrázek:

docker build -t goals-react .

A běžel kontejneru v připojené režimu:

docker run --name goals-app --rm -p 3000:3000 goals-react

To je výstup, který jsem obdržel:

> [email protected] start
> react-scripts start

ℹ 「wds」: Project is running at http://172.17.0.4/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /app/public
ℹ 「wds」: 404s will fallback to /

Starting the development server...

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 (/app/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/app/node_modules/webpack/lib/NormalModule.js:471:10)
    at /app/node_modules/webpack/lib/NormalModule.js:503:5
    at /app/node_modules/webpack/lib/NormalModule.js:358:12
    at /app/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/app/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/app/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
/app/node_modules/react-scripts/scripts/start.js:19
  throw err;
  ^

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

Node.js v17.1.0

Předpokládal jsem, že to bylo proto, že reagovat projektu bylo pomocí staré verze reagovat, takže jsem upgrade balíčku.json soubor s následující příkazy:

npx npm-check-updates -u
npm install

Pak jsem odstranil a znovu obraz, a pak se rozběhl nový kontejner:

docker rmi goals-react
docker build -t goals-react .
docker run --name goals-app --rm -p 3000:3000 goals-react

Ale k mému překvapení jsem obdržel stejnou chybu. Tak jsem si vygooglil digital envelope routines::unsupported a ještě jsem našel další stackoverflow diskuse.

Provedl jsem následující příkaz:

export NODE_OPTIONS=--openssl-legacy-provider

Pak jsem obnovoval obraz a restartovat kontejner, ale bezvýsledně. Rozhodl jsem se přečíst chybovou zprávu důkladněji, a to se zdá být webpack chyba. Šel jsem do webpack github stránku a uvědomil jsem si, že někdo jiný měl stejný problém, tady, nicméně problém je uzavřen. Oni také doporučuje výše uvedený příkaz, ale to samozřejmě není práce pro mě.

Díky předem za jakoukoli zpětnou vazbu a pomoc.

Edit:

Jak požaduje @MikiBelavista, tady je ten balíček.json souboru:

{
  "name": "frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.15.1",
    "@testing-library/react": "^12.1.2",
    "@testing-library/user-event": "^13.5.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

docker node.js reactjs webpack
2021-11-24 04:43:15
2

Nejlepší odpověď

1

Změnit své linky

"start": "react-scripts start",

k

"start": "react-scripts --openssl-legacy-provider start"

Ale být vědomi, že OpenSSL implementací algoritmů, které byly považovány za dědictví. Více OpenSSl

2021-11-24 07:37:17
0

Aktualizace balíčku.json "start" script čtení:

"start": "react-scripts --openssl-legacy-provider start"

Ujistěte se, že jste znovu docker image, jinak budete mít stejné chyby.

docker build --pull --rm -f "Dockerfile" -t yourappname:latest "."
2021-12-08 21:53:56

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................