npm error Integrity checksum failed when using sha512: wanted sha512-xxx but got sha512-xxx
我的node 版本为: 18.20.4, npm 版本为:10.xx.xxnode 18.20.4 和 npm 10.xx.xx 和 react 17.0.2 版本不兼容yarn dev。
一个古老的 React 项目启动报错问题
npm error Integrity checksum failed when using sha512: wanted sha512-xxx but got sha512-xxx
我的node 版本为: 18.20.4, npm 版本为:10.xx.xx
执行 npm install 报错如下:
npm error code EINTEGRITY
npm error Integrity checksum failed when using sha512: wanted sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== but got sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==.
npm error A complete log of this run can be found in: G:\Program Files\nodejs\nodev16151\node_cache_logs\2024-11-19T01_45_38_124Z-debug-0.log
10% building 1/3 modules 2 active G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\webpack\hot\dev-server.jsnode:internal/crypto/hash:69
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:69:19)
at Object.createHash (node:crypto:133:10)
at module.exports (G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\webpack\lib\NormalModule.js:471:10)
at G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\webpack\lib\NormalModule.js:503:5
at G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\webpack\lib\NormalModule.js:358:12
at G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at Array.<anonymous> (G:\project\company\yuexiu2\iflydx-aimpyx-home-master\node_modules\loader-runner\lib\LoaderRunner.js:205:4) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.20.4
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
npm ERR! code ETARGET
npm ERR! notarget No matching version found for string-width-cjs@4.2.3.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of '@isaacs/cliui'
npm ERR! notarget
npm ERR! A complete log of this run can be found in:
npm ERR! G:\Program Files\nodejs\nodev16151\node_cache\_logs\2024-11-25T16_05_44_022Z-debug.log
PS G:\project\vscode\study\react\EasyReact\react-basic> npm install webpack webpack-dev-server webpack-cli webpack-merge -D
我遇到的这个错是因为 node 版本不兼容问题,我的 React 项目中使用的依赖如下:
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-json-view": "^1.19.1",
"react-redux": "^5.0.7",
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",
"react-router-redux": "^5.0.0-alpha.9",
"redux": "^4.0.0",
"redux-persist": "^5.10.0",
"redux-saga": "^0.16.0",
原因:
node 18.20.4 和 npm 10.xx.xx 和 react 17.0.2 版本不兼容
解决:
- 卸载 npm (一定要先卸载 npm ,再降级 node 版本,如果先降级 node 版本再卸载 npm, 会报错 “”“ERROR: npm v10.9.0 is known not to run on Node.js v14.18.1. This version of npm supports the following node versions: ^18.17.0 || >=20.5.0. You can find the latest version at https://nodejs.org/.”)
npm uninstall -g npm
- 使用 nvm 降级 node 版本到 14.18.1
nvm install 14.18.1
nvm use 14.18.1
- 安装 npm 版本
npm install -g npm@6
- 再次安装项目
yarn install
- 启动项目
yarn dev
下面是详细的与 ChatGPT 交互解决问题的过程,可看可不看,解决方案已经浓缩在上面了。
react 17.0.2 适合用哪个 node.js 版本?
React 17.0.2 是一个相对稳定的版本,它可以与多个版本的 Node.js 配合使用,但为了获得最佳兼容性和性能,建议使用以下 Node.js 版本:
推荐 Node.js 版本
Node.js 12.x (LTS) 或 Node.js 14.x (LTS):这两个版本与 React 17 兼容性最好,特别是 Node.js 14.x 是当前的长期支持 (LTS) 版本,许多 React 项目和工具链都经过了这个版本的广泛测试和验证。
Node.js 16.x:虽然 React 17 也可以在 Node.js 16.x 上正常运行,但这个版本相对较新,部分依赖库可能尚未完全适配,因此如果你的项目没有特殊需求,使用 12.x 或 14.x 会更加稳定。
关于 Node.js 版本的选择
LTS 版本:选择 LTS(长期支持)版本会更稳定,因为这些版本会得到更长时间的支持和维护。Node.js 12.x 和 14.x 都属于 LTS 版本。
当前版本:如果你不介意使用一些较新的功能,也可以选择 Node.js 16.x,但需要确保你的依赖和开发工具链都支持该版本。
推荐配置:
Node.js 14.x 或 12.x LTS — 推荐的稳定性与兼容性。
npm 6.x 或 7.x — React 17 推荐使用的 npm 版本,npm 7.x 引入了一些新的功能(比如自动安装 peer dependencies),但也可能会与某些包不完全兼容。
检查你的环境
你可以通过以下命令查看你当前的 Node.js 和 npm 版本:
node -v
npm -v
如果你需要切换 Node.js 版本,建议使用 nvm (Node Version Manager),它可以帮助你轻松管理多个 Node.js 版本。
总结:
推荐使用 Node.js 12.x 或 14.x LTS 版本与 React 17 配合。
Node.js 16.x 也可以使用,但最好先验证项目和依赖是否完全兼容。
nvm 切换 node 版本
使用 nvm (Node Version Manager) 可以帮助你在不同的 Node.js 版本之间轻松切换。以下是如何在 Windows 和 macOS/Linux 上使用 nvm 切换 Node.js 版本的步骤。
- 安装 nvm
Windows 上安装 nvm
在 Windows 上,nvm 需要使用 nvm-windows,这是为 Windows 特别定制的版本。
下载最新的 nvm-windows 安装包:nvm-windows releases
运行安装程序并按照提示完成安装。
安装完成后,打开新的命令行窗口(CMD 或 PowerShell),你可以检查是否安装成功:
nvm --version
nvm --version
- 使用 nvm 切换 Node.js 版本
安装一个新的 Node.js 版本
你可以使用 nvm install 来安装所需的 Node.js 版本,例如:
nvm install 14.17.0 # 安装 Node.js 14.17.0
nvm install 16.0.0 # 安装 Node.js 16.0.0
nvm install --lts # 安装最新的 LTS 版本
nvm install 18 # 安装 Node.js 18.x(最新版本)
安装完成后,你可以使用以下命令来查看已安装的版本:
nvm list
切换 Node.js 版本
安装完成后,你可以使用 nvm use 命令切换到不同的 Node.js 版本。例如,切换到 Node.js 14.17.0:
nvm use 14.17.0
如果你想切换到最新的 LTS 版本,可以使用:
nvm use --lts
设置默认的 Node.js 版本
如果你希望某个版本成为默认版本(即每次打开新的终端时自动使用该版本),可以使用:
nvm alias default 14.17.0
这个命令会将 Node.js 14.17.0 设置为默认版本。
查看当前正在使用的 Node.js 版本
你可以使用以下命令来查看当前正在使用的 Node.js 版本:
node -v
- 卸载不再需要的 Node.js 版本
如果你不再需要某个版本的 Node.js,可以通过以下命令卸载:
nvm uninstall 14.17.0
总结
使用 nvm install 安装特定版本的 Node.js。
使用 nvm use 切换到指定版本。
使用 nvm alias default 设置默认版本。
使用 nvm list 查看已安装的版本,node -v 查看当前版本。
这样,你可以非常灵活地管理和切换 Node.js 版本,适配不同的项目需求。
更换 npm 版本
我更新node版本为 14.18.1 之后,执行 npm -v 报错
C:\Users\28474>npm -v
ERROR: npm v10.9.0 is known not to run on Node.js v14.18.1. This version of npm supports the following node versions: ^18.17.0 || >=20.5.0. You can find the latest version at https://nodejs.org/.
ERROR:
G:\Program Files\nodejs\nodev16151\node_global\node_modules\npm\lib\utils\error-message.js:11
er.message &&= replaceInfo(er.message)
^^^
SyntaxError: Unexpected token '&&='
at wrapSafe (internal/modules/cjs/loader.js:1001:16)
at Module._compile (internal/modules/cjs/loader.js:1049:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:93:18)
at Object.<anonymous> (G:\Program Files\nodejs\nodev16151\node_global\node_modules\npm\lib\cli\exit-handler.js:2:48)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
这问题是因为 npm v10.9.0 不兼容 Node.js v14.18.1,并且 Node 14 的版本太低,无法运行该版本的 npm。
解决方法如下:
降级 npm 版本:你可以将 npm 降级到与 Node.js 14.x 兼容的版本(通常是 npm v6 或 v7)。使用以下命令安装合适的 npm 版本:
npm install -g npm@6
检查当前 Node 版本:确认你的 Node.js 版本已经是 14.18.1。你可以使用以下命令查看:
node -v
重新安装 npm:如果你仍然遇到问题,可以尝试完全卸载 npm,并使用兼容的版本重新安装。首先卸载当前 npm 版本:
npm uninstall -g npm
然后安装适合的版本:
npm install -g npm@6
升级 Node.js 版本:如果可能的话,考虑升级你的 Node.js 版本到 16.x 或更高版本,这样就能使用 npm v10 及其新特性。
执行npm install 报错
npm WARN iflydx-aimp-openapp@1.14.1 No repository field.
npm ERR! code ENOENT
npm ERR! syscall rename
npm ERR! path G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules\events
npm ERR! dest G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules.events.DELETE
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, rename 'G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules\events' -> 'G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules.events.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! G:\Program Files\nodejs\nodev16151\node_cache_logs\2024-11-19T02_24_38_333Z-debug.log
你遇到的错误 ENOENT 表示 “Error NO ENTity”,即系统无法找到指定的文件或目录。在你提供的日志中,npm 尝试重命名 node_modules\events 目录,但系统无法找到它,因此报出了错误。
错误详细分析:
npm WARN iflydx-aimp-openapp@1.14.1 No repository field.
这是一个警告,意味着你正在使用的 iflydx-aimp-openapp 包的 package.json 文件中没有指定 repository 字段。这个警告通常不会影响 npm 的安装和操作,它只是提醒你缺少该字段。
npm ERR! code ENOENT
这是主要的错误,表示 npm 在处理文件时遇到了文件或目录缺失的问题。具体地说,npm 尝试在路径 G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules\events 中进行 rename 操作,但这个目录或文件并不存在。
npm ERR! syscall rename
这里 rename 表示 npm 试图重命名或移动文件,但遇到了问题。
npm ERR! enoent ENOENT: no such file or directory, rename 'G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules\events' -> 'G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules\.events.DELETE'
这表示 npm 正在尝试移动或重命名 node_modules\events 目录到 .events.DELETE,但是 events 目录不存在。
可能的原因:
node_modules 中的目录或文件缺失:npm 在安装过程中需要移动或重命名一些目录,但它无法找到 node_modules\events 目录。这通常发生在安装过程被中断或某些文件/目录损坏的情况下。
权限问题:在某些情况下,操作系统的权限设置可能导致 npm 无法访问或修改某些文件或目录。
缓存问题:npm 的缓存可能有问题,导致它在安装过程中遇到错误。
解决方法:
清空 npm 缓存:尝试清理 npm 的缓存,可能是缓存中的某些内容导致了安装错误。运行以下命令:
npm cache clean --force
删除 node_modules 和 package-lock.json 文件:
删除现有的 node_modules 目录和 package-lock.json 文件,然后重新安装依赖项。这能帮助你清理任何可能的损坏的依赖或冲突。
rm -rf node_modules
rm package-lock.json
npm install
如果你在 Windows 上,可以手动删除 node_modules 文件夹和 package-lock.json 文件。
检查文件和文件夹权限:确保你有足够的权限访问 G:\project\company\yuexiu\iflydx-aimpyx-home-master\node_modules 目录。你可以尝试以管理员身份运行命令提示符或 PowerShell。
重新安装 Node.js 和 npm:如果上述方法无效,可能是 npm 或 Node.js 安装出现了问题。尝试重新安装 Node.js 和 npm。
先卸载 Node.js。
然后下载并重新安装最新稳定版本的 Node.js。
检查网络和依赖问题:有时候依赖包的网络问题也会导致安装失败,尤其是 npm 在下载包时出错。你可以尝试使用 npm install --verbose 来获取更详细的日志,查看是否有其他的错误提示。
结论
通常,ENOENT 错误是因为 npm 无法找到或访问需要的文件或目录。通过清理缓存、删除 node_modules 和重新安装依赖,通常可以解决问题。如果问题仍然存在,可以进一步检查权限设置或尝试重新安装 Node.js 和 npm。
但是我的项目没有 package-lock.json ,只有 yarn.lock
如果你看到的是 yarn.lock 而不是 package-lock.json,那么说明项目是使用 Yarn 作为包管理器,而不是 npm。yarn.lock 是 Yarn 用来锁定依赖版本的文件,而 package-lock.json 是 npm 用的。
解决方法:
尝试使用 Yarn 安装依赖:
既然项目使用的是 Yarn,你可以尝试使用 Yarn 来安装依赖,而不是 npm。运行以下命令:
yarn install
这将使用 yarn.lock 文件来安装依赖,并且会自动创建(或更新)node_modules 目录。
如果你想使用 npm 进行安装:
如果你确实希望使用 npm 进行安装并不想继续使用 Yarn,那么你可以删除 yarn.lock 文件,然后运行 npm install。不过这样可能会导致 Yarn 和 npm 的依赖锁定冲突,最好选择其中一种包管理工具进行管理。
例如,如果你决定切换到 npm:
删除 yarn.lock 文件
删除现有的 node_modules 目录
然后使用 npm install 来安装依赖。
但是,这种做法需要谨慎,因为删除 yarn.lock 后可能会引入不同的依赖版本,尤其是当不同包管理工具的锁文件存在时。
检查 node_modules 中是否有 events 包:
如果 events 是一个常见的核心包,通常它应该已经被包含在 Node.js 环境中。如果你碰到的 ENOENT 错误是由于某个特定包缺失,尝试删除 node_modules 和锁文件后重新安装。
运行 Yarn 的缓存清理:
如果问题仍然存在,可能是因为缓存中的某些问题导致安装失败。你可以尝试清理 Yarn 的缓存,然后再尝试安装:
yarn cache clean
yarn install
总结:
使用 Yarn 作为包管理工具时,应该使用 yarn install 来安装依赖。
如果你坚持使用 npm,可以删除 yarn.lock,并且确保使用 npm 的相关命令,如 npm install。但这种做法可能会带来依赖版本冲突,最好统一使用一个包管理工具。
node v14.18.1 和 yarn 哪个版本匹配
关于 Node.js 和 Yarn 的版本兼容性,通常情况下,Yarn 会兼容较广泛的 Node.js 版本,但为了确保最佳的兼容性和性能,最好使用 Yarn 推荐的 Node.js 版本范围。
关于 Node.js 版本 v14.18.1:
Node.js v14.x.x 是 Node.js 14 版本的一个 LTS(长期支持)版本。它在 2020 年 10 月发布,并且将会一直得到支持直到 2023 年 4 月。
对于 Yarn 来说,Node.js v14 应该没有任何问题,尤其是 Yarn 1.x 和 Yarn 2.x 都支持 Node.js v14。
与 Yarn 版本的兼容性:
Yarn 1.x:
Yarn 1.x(比如 1.22.x)完全兼容 Node.js 14,包括 14.18.1 这样的版本。这是最常见的稳定版本,适用于大多数项目。
Yarn 2.x (Berry):
Yarn 2.x(也叫做 Berry 版本)同样支持 Node.js 14。Yarn 2 引入了许多新的特性和改进,包括对 Plug’n’Play (PnP) 的支持,以及更高效的依赖管理系统,但它的使用可能需要一些配置上的调整。
推荐版本:
Yarn 1.22.x:这是目前最常用的稳定版本,适用于大部分项目。
Yarn 2.x:适合需要使用 Yarn 新特性(如 PnP)的项目,但迁移到 Yarn 2.x 需要一些额外的配置工作。
具体如何查看和升级:
查看当前安装的 Yarn 版本:使用 yarn --version。
如果你想升级 Yarn 到最新版本,可以使用以下命令:
npm install -g yarn
这会安装最新稳定版本的 Yarn。
总结:
Node.js v14.18.1 与 Yarn 1.x 和 2.x 都兼容,你可以使用这两个版本。
如果你是第一次使用 Yarn,建议从 Yarn 1.x 开始,因为它更稳定且文档丰富。如果你需要 Yarn 的新特性,可以考虑升级到 Yarn 2.x(Berry)。
yarn 启动项目
yarn dev
或者
yarn dev:xxx
更多推荐
所有评论(0)