如何修复npm run build未知错误及npm start的ERR_OSSL_EVP_UNSUPPORTED错误
React项目构建与启动错误解决方案
问题描述
4个月前创建的React项目honest-trading,现在执行npm run build时出现UNKNOWN读错误,执行npm start时出现ERR_OSSL_EVP_UNSUPPORTED错误,具体报错信息如下:
1. npm run build报错
$ npm run build > honest-trading@0.1.0 build > react-scripts build
node:internal/fs/utils:347 throw err; ^ Error: UNKNOWN: unknown error, read at Object.readSync (node:fs:748:3) at tryReadSync (node:fs:448:20) at Object.readFileSync (node:fs:486:19) at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\react-dev-utils\FileSizeReporter.js:139:29 at Array.reduce (<anonymous>) at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\react-dev-utils\FileSizeReporter.js:138:48 at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\recursive-readdir\index.js:81:22 at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\recursive-readdir\index.js:81:22 at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\recursive-readdir\index.js:88:20 at FSReqCallback.oncomplete (node:fs:208:5) { errno: -4094, syscall: 'read', code: 'UNKNOWN' } Node.js v18.14.2
2. npm start报错
Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\webpack\lib\util\createHash.js:90:53) at NormalModule._initBuildHash (C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\webpack\lib\NormalModule.js:386:16) at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\webpack\lib\NormalModule.js:418:10 at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\webpack\lib\NormalModule.js:293:13 at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\loader-runner\lib\LoaderRunner.js:367:11 at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\loader-runner\lib\LoaderRunner.js:233:18 at context.callback (C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\loader-runner\lib\LoaderRunner.js:111:13) at C:\Users\rusla\OneDrive\Рабочий стол\Sites\honesttrading\honest-trading\node_modules\babel-loader\lib\index.js:51:103 { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' } Node.js v18.14.2
解决方案
针对UNKNOWN读错误
- 移出OneDrive同步目录:项目存储在OneDrive下时,同步锁可能导致文件无法被读取。将整个项目文件夹移动到本地非同步路径(比如
C:\Users\rusla\Documents),再重新执行构建命令。 - 清理依赖并重新安装:
# Windows命令行 rmdir /s/q node_modules && del package-lock.json npm install# Linux/macOS rm -rf node_modules package-lock.json npm install - 删除build目录后重试:
# Windows命令行 rmdir /s/q build npm run build# Linux/macOS rm -rf build npm run build - 检查文件完整性:排查项目中是否存在损坏、0字节或权限受限的文件,删除或修复这类文件后再构建。
针对ERR_OSSL_EVP_UNSUPPORTED错误
这个错误是Node.js 17+版本(含v18)使用OpenSSL 3.0,与旧版webpack/react-scripts的哈希算法不兼容导致的,可通过以下方式解决:
- 临时设置环境变量:
- Windows命令行:
set NODE_OPTIONS=--openssl-legacy-provider npm start # 构建时 set NODE_OPTIONS=--openssl-legacy-provider npm run build - Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider" npm start
- Windows命令行:
- 升级react-scripts到最新版本:
npm install react-scripts@latest - 修改package.json脚本:将环境变量整合到启动/构建命令中,避免每次手动设置:
(Linux/macOS用户将"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start", "build": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts build" }set替换为export即可)
内容的提问来源于stack exchange,提问作者Ruslan Makhmatov
相关产品推荐
相关产品推荐

