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"
]
}
}