运行 npm 运行 构建 dockerfile 时出现构建错误

RUN npm run build error when build dockerfile

我正在尝试为我的简单待办应用程序构建 Docker 图像,我已经内置了 React 和 JS,但是当我构建我的应用程序时 [4/4] RUN npm run build 出现错误

这是我遇到的错误

=> ERROR [4/4] RUN npm run build                                                                                  4.4s
------
 > [4/4] RUN npm run build:
#8 1.648
#8 1.648 > todo-app@0.1.0 build
#8 1.648 > react-scripts build
#8 1.648
#8 3.318 Creating an optimized production build...
#8 3.815 Error: error:0308010C:digital envelope routines::unsupported
#8 3.815     at new Hash (node:internal/crypto/hash:67:19)
#8 3.815     at Object.createHash (node:crypto:130:10)
#8 3.815     at module.exports (/todo-app/node_modules/webpack/lib/util/createHash.js:135:53)
#8 3.815     at NormalModule._initBuildHash (/todo-app/node_modules/webpack/lib/NormalModule.js:417:16)
#8 3.815     at handleParseError (/todo-app/node_modules/webpack/lib/NormalModule.js:471:10)
#8 3.815     at /todo-app/node_modules/webpack/lib/NormalModule.js:503:5
#8 3.815     at /todo-app/node_modules/webpack/lib/NormalModule.js:358:12
#8 3.815     at /todo-app/node_modules/loader-runner/lib/LoaderRunner.js:373:3
#8 3.815     at iterateNormalLoaders (/todo-app/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
#8 3.815     at iterateNormalLoaders (/todo-app/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
#8 3.815     at /todo-app/node_modules/loader-runner/lib/LoaderRunner.js:236:3
#8 3.815     at runSyncOrAsync (/todo-app/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
#8 3.815     at iterateNormalLoaders (/todo-app/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
#8 3.815     at Array.<anonymous> (/todo-app/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
#8 3.815     at Storage.finished (/todo-app/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
#8 3.815     at /todo-app/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
#8 3.831 /todo-app/node_modules/react-scripts/scripts/build.js:19
#8 3.831   throw err;
#8 3.831   ^
#8 3.831
#8 3.831 Error: error:0308010C:digital envelope routines::unsupported
#8 3.831     at new Hash (node:internal/crypto/hash:67:19)
#8 3.831     at Object.createHash (node:crypto:130:10)
#8 3.831     at module.exports (/todo-app/node_modules/webpack/lib/util/createHash.js:135:53)
#8 3.831     at NormalModule._initBuildHash (/todo-app/node_modules/webpack/lib/NormalModule.js:417:16)
#8 3.831     at /todo-app/node_modules/webpack/lib/NormalModule.js:452:10
#8 3.831     at /todo-app/node_modules/webpack/lib/NormalModule.js:323:13
#8 3.831     at /todo-app/node_modules/loader-runner/lib/LoaderRunner.js:367:11
#8 3.831     at /todo-app/node_modules/loader-runner/lib/LoaderRunner.js:233:18
#8 3.831     at context.callback (/todo-app/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
#8 3.831     at /todo-app/node_modules/babel-loader/lib/index.js:59:103 {
#8 3.831   opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
#8 3.831   library: 'digital envelope routines',
#8 3.831   reason: 'unsupported',
#8 3.831   code: 'ERR_OSSL_EVP_UNSUPPORTED'
#8 3.831 }
#8 3.831
#8 3.831 Node.js v17.1.0
#8 3.842 npm notice
#8 3.842 npm notice New patch version of npm available! 8.1.2 -> 8.1.4
#8 3.842 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v8.1.4>
#8 3.842 npm notice Run `npm install -g npm@8.1.4` to update!
#8 3.843 npm notice
------
executor failed running [/bin/sh -c npm run build]: exit code: 1

这是我的Docker文件

FROM node:17.1-alpine
WORKDIR /todo-app
ENV PATH=".node_modules/.bin:$PATH"
COPY . .
RUN npm run build
CMD ["npm", "start"]

在我的例子中,这个错误通常是因为 node v17 而不是 webpack,后者通常与 node v16 一起工作正常。

您是否在 版本 16(它是 LTS)中尝试过 Node?

你能尝试降级你的节点版本吗?

请参考:https://exerror.com/error-error0308010cdigital-envelope-routinesunsupported-in-reactjs/