一年前的 React 项目,最近,当我尝试运行
yarn start
时遇到此错误。
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:80:19)
at Object.createHash (node:crypto:139:10)
at module.exports (.../node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (.../node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (.../node_modules/webpack/lib/NormalModule.js:471:10)
at .../node_modules/webpack/lib/NormalModule.js:503:5
at .../node_modules/webpack/lib/NormalModule.js:358:12
at .../node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (.../node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (.../node_modules/loader-runner/lib/LoaderRunner.js:221:10)
.../node_modules/react-scripts/scripts/start.js:19
throw err;
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:80:19)
at Object.createHash (node:crypto:139:10)
at module.exports (.../node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (.../node_modules/webpack/lib/NormalModule.js:417:16)
at .../node_modules/webpack/lib/NormalModule.js:452:10
at .../node_modules/webpack/lib/NormalModule.js:323:13
at .../node_modules/loader-runner/lib/LoaderRunner.js:367:11
at .../node_modules/loader-runner/lib/LoaderRunner.js:233:18
at context.callback (.../node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at .../node_modules/react-scripts/node_modules/babel-loader/lib/index.js:59:103 {
opensslErrorStack: [
'error:03000086:digital envelope routines::initialization error',
'error:0308010C:digital envelope routines::unsupported'
],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
一些帖子建议使用:
export NODE_OPTIONS=--openssl-legacy-provider
然后我得到了这个错误,但是,我正在使用react 16.8.0
src/index.tsx
Line 11:1: This should be done within a hook jest/require-hook
Line 11:1: ReactDOM.render is deprecated since React 18.0.0, use createRoot instead, see https://reactjs.org/link/switch-to-createroot react/no-deprecated
Line 26:1: This should be done within a hook jest/require-hook
src/utils/axiosIntercepter.js
Line 4:1: This should be done within a hook jest/require-hook
Line 14:1: This should be done within a hook jest/require-hook
如有任何建议,我们将不胜感激,提前致谢。
您还可以采取以下几个步骤来排除故障并可能解决问题:
降级 Node.js:虽然通常建议使用最新版本的 Node.js,但在某些情况下,它可能会引入某些软件包的兼容性问题。您可以尝试将 Node.js 降级到更稳定或更广泛使用的版本,例如 LTS(长期支持)版本,看看问题是否仍然存在。 检查更新:确保所有项目依赖项(包括 webpack 和 React-scripts)都是最新的。有时,更新这些依赖项可以解决与较新版本的 Node.js 的兼容性问题。 检查 webpack 配置:如果错误特别提到 webpack,则您的 webpack 设置中可能存在配置问题。检查您的 webpack 配置、插件和加载器,确保它们与您正在使用的 Node.js 版本兼容。 检查特定于环境的配置:如果您使用任何特定于环境的配置(例如环境变量或配置文件),请确保它们设置正确并且不会与您的 Node.js 设置发生冲突。 搜索类似问题:在论坛、GitHub 问题或 Stack Overflow 上查找其他用户报告的类似问题。其他人可能遇到并解决了同样的问题,提供了有价值的见解或解决方法。 报告问题:如果您无法自行解决问题,请考虑将其报告给受影响的包或库的维护者。他们也许能够在未来版本中提供帮助或发布针对该问题的修复程序。 考虑使用不同的环境:如果所有其他方法都失败并且问题仍然存在,请考虑在不同的开发环境上设置项目,例如不同的计算机或具有不同配置的虚拟机。这可以帮助隔离问题并提供临时解决方法,直到找到永久解决方案。