ฉันมีเรียนใน docker แน่นอและครูมีเตรียมไว้ให้เป็นโครงการแค่สตาร์ทเตอร์กับบางอย่าดีกว่าเก่าของตอบโต้นรหัสมอส
ฉัน dockerized งโต้ตอบโครงการอยู่ที่นี่เป็นที่เรียบง่าย Dockerfile:
FROM node
WORKDIR /app
COPY package.json .
RUN npm i
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
งั้นฉันสร้างภาพ:
docker build -t goals-react .
และวิ่งหนีเป็นตู้คอนเทนเนอร์อยู่ในแนนโหมด:
docker run --name goals-app --rm -p 3000:3000 goals-react
นี่คือการส่งออกฉันได้รับ:
> [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
ฉันคิดว่ามันเป็นเพราะโครงการตอบโต้ใช้เก่าของตอบโต้ดังนั้นฉัน สามารถยกระดับเป็นแพ็คเก็จฉันทำอยู่บ่อยๆlanguage องแฟ้มกับคนทำตามคำสั่งของ:
npx npm-check-updates -u
npm install
งั้นฉันเอาตัวเองและสร้างตัวขึ้นใหม่ภาพและจากนั้นก็วิ่งหนีเป็นตู้คอนเทนเนอร์ใหม่:
docker rmi goals-react
docker build -t goals-react .
docker run --name goals-app --rm -p 3000:3000 goals-react
แต่ต้องของเซอร์ไพรส์ฉันได้รับเดียวกับข้อผิดพลาด ดังนั้นฉันไปเสิร์ชกูเกิ้ล digital envelope routines::unsupported
และฉันเจอรึยังอีก stackoverflow กัน.
ฉันประหารคอยตามคำสั่ง:
export NODE_OPTIONS=--openssl-legacy-provider
งั้นฉันสร้างมาแทนใหม่ภาพและเริ่มงานใหม่ตู้คอนเทนเนอแต่ต้องไม่ avail. ฉันตัดสินใจที่จะอ่านข้อผิดพลาดข้อความมากกว่าให้รอบคอบก่อนและมันดูเหมือนว่าจะเป็น webpack ข้อผิดพลาด ฉันไปที่ webpack github หน้าและฉันรู้ว่ามันต้องมีใครซักคนเดียวกับปัญหา ที่นี่อย่างไรก็ตามปัญหาของมันปิดไปแล้ว พวกเขาแนะนำที่เหนือคำสั่ง,แต่มันเห็นได้ชัดว่าไม่ได้ทำงานสำหรับฉัน
ขอบคุณล่วงหน้าสำหรับพแจ้งการใช้งานและสร้างสรรค์ช่วยด้วย
แก้ไข:
ตามที่ร้องขอมาย@MikiBelavista มาเป็นแพ็คเก็จฉันทำอยู่บ่อยๆlanguage แฟ้ม:
{
"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"
]
}
}