Chyba s docker a reagovať, digitálne obálky postupy::nepodporovaná

0

Otázka

Mám zapísaní v docker kurz inštruktora poskytla starter projekt u niektorých skôr staré reagovať kód.

Som dockerized v reagovať projektu, tu je jednoduchý Dockerfile:

FROM node

WORKDIR /app

COPY package.json .

RUN npm i

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

Potom som sa postavil na obrázku:

docker build -t goals-react .

A bežal kontajner v pripojenom režime:

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

Toto je výstupný som dostal:

> [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

Predpokladal som, že to bolo preto, lebo reagovať projekt bol pomocou starú verziu reagovať, tak som upgradovali balíka.json súbor s nasledujúcimi príkazmi:

npx npm-check-updates -u
npm install

Potom som odstrániť a znovu vytvoriť obrázok, a potom bežal nový kontajner:

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

Ale na moje prekvapenie som dostal rovnakú chybu. Tak som googled digital envelope routines::unsupported a ja som našiel ešte iný stackoverflow diskusiu.

Som vykonal nasledovný príkaz:

export NODE_OPTIONS=--openssl-legacy-provider

Potom som prestavaný obrazu a znovu kontajner, ale bezvýsledne. Ja som sa rozhodol, prečítajte si chybové hlásenie dôkladnejšie a zdá sa, že webpack chyba. Išiel som do webpack github stránky a uvedomil som si, že niekto mal ten istý problém tuvšak problém je zatvorené. Taktiež sa odporúča vyššie uvedený príkaz, ale to zrejme nie je práca pre mňa.

Vopred ďakujeme za akúkoľvek spätnú väzbu a pomoc.

Úprava:

Ako to požaduje @MikiBelavista, tu je balíka.json súbor:

{
  "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

Najlepšiu odpoveď

1

Zmeniť svoj line

"start": "react-scripts start",

na

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

Ale byť vedomí, že OpenSSL implementácie algoritmov, ktoré boli považované za dedičstvo. Viac OpenSSl

2021-11-24 07:37:17
0

Aktualizácia balíka.json "štart" skript čítať:

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

Uistite sa, že ste prestavať docker obrázok, inak dostanete rovnakú chybu.

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

V iných jazykoch

Táto stránka je v iných jazykoch

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