DevEco Studio与npm冲突问题

DevEco Studio与npm冲突问题 大家好!第一次下载DevEco Studio,到新建项目时报错:

"E:\softwares\deveco\DevEco Studio\tools\node\node.exe" "E:\softwares\deveco\DevEco Studio\tools\hvigor\bin\hvigorw.js" --sync -p product=default --analyze=normal --parallel --incremental --no-daemon
Installing pnpm@8.13.1...
npm warn cli npm v11.1.0 does not support Node.js v18.20.1. This version of npm supports the following node versions: `^20.17.0 || >=22.9.0`. You can find the latest version at https://nodejs.org/.
npm error code EPERM
npm error syscall open
npm error path D:\nodejs\node_cache\_cacache\tmp\d37106db
npm error errno EPERM
npm error FetchError: Invalid response body while trying to fetch https://registry.npmmirror.com/pnpm: EPERM: operation not permitted, open 'D:\nodejs\node_cache\_cacache\tmp\d37106db'
npm error     at D:\nodejs\node_global\node_modules\npm\node_modules\minipass-fetch\lib\body.js:170:15
npm error     at async Response.json (D:\nodejs\node_global\node_modules\npm\node_modules\minipass-fetch\lib\body.js:75:17)
npm error     at async RegistryFetcher.packument (D:\nodejs\node_global\node_modules\npm\node_modules\pacote\lib\registry.js:98:25)
npm error     at async RegistryFetcher.manifest (D:\nodejs\node_global\node_modules\npm\node_modules\pacote\lib\registry.js:128:23)
npm error     at async #fetchManifest (D:\nodejs\node_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:1202:20)
npm error     at async #nodeFromEdge (D:\nodejs\node_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:1040:19)
npm error     at async #buildDepStep (D:\nodejs\node_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:904:11)
npm error     at async Arborist.buildIdealTree (D:\nodejs\node_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:181:7)
npm error     at async Promise.all (index 1)
npm error     at async Arborist.reify (D:\nodejs\node_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\reify.js:131:5) {
npm error   code: 'EPERM',
npm error   errno: 'EPERM',
npm error   syscall: 'open',
npm error   path: 'D:\\nodejs\\node_cache\\_cacache\\tmp\\d37106db',
npm error   type: 'system',
npm error   requiredBy: '.'
npm error }
npm error
npm error The operation was rejected by your operating system.
npm error It's possible that the file was already in use (by a text editor or antivirus),
npm error or that you lack permissions to access it.
npm error
npm error If you believe this might be a permissions issue, please double-check the
npm error permissions of the file and its containing directories, or try running
npm error the command again as root/Administrator.
npm error Log files were not written due to an error writing to the directory: D:\nodejs\node_cache\_logs
npm error You can rerun the command with `--loglevel=verbose` to see the logs in your terminal
> hvigor ERROR: 00308002 Operation Error
Error Message: E:\softwares\deveco\DevEco Studio\tools\node\npm.cmd install,pnpm execute failed.
* Try the following: 
  > Space is not supported in HVIGOR_USER_HOME. Remove the space in HVIGOR_USER_HOME to fix the issue.

应该是本地已经装了nodejs,所以版本冲突了?有尝试把DevEco Studio从D盘换到E盘,但是后来看到nodejs是全局安装了的,是不是只有删除nodejs,再重装DevEco Studio这一种方法了?因为不太想删nodejs。

请教各位!


2 回复

DevEco Studio内置了Node.js和npm环境,与系统全局npm可能存在版本冲突。解决方法:在DevEco Studio的终端中执行npm命令,使用其内置环境;或在项目配置中指定Node.js路径。避免混合使用不同环境的npm包管理器。


这个问题主要是由于你本地安装的Node.js版本与DevEco Studio内置的Node.js版本不兼容,并且权限冲突导致的。

从错误信息看,关键点有两个:

  1. npm warn cli npm v11.1.0 does not support Node.js v18.20.1:你系统环境变量中的Node.js版本(v18.20.1)与当前npm版本(v11.1.0)不匹配。DevEco Studio(特别是其工具链hvigor)在初始化项目时,会尝试安装pnpm,这个过程调用了你系统全局的npm,而该npm版本要求Node.js版本为^20.17.0 || >=22.9.0
  2. npm error code EPERM:在尝试向D:\nodejs\node_cache\_cacache\tmp\写入文件时,遇到了权限被拒绝的问题。这通常是因为缓存目录被占用(如杀毒软件锁定)或当前用户没有写入权限。

根本原因是DevEco Studio的项目构建工具(hvigor)在初始化时,没有完全隔离使用其自带的Node.js环境,而是受到了系统全局Node.js环境的影响,导致了版本冲突和权限问题。

解决方案(无需完全卸载系统Node.js):

  1. 临时清除npm缓存并修复权限(首选尝试):

    • 关闭DevEco Studio。
    • 管理员身份打开命令提示符(CMD)或PowerShell。
    • 运行以下命令清除可能损坏的npm缓存:
      npm cache clean --force
      
    • 确保你的用户对Node.js的安装目录(D:\nodejs)和缓存目录(D:\nodejs\node_cache)拥有完全控制权。可以在文件夹属性->安全选项卡中检查和修改权限。
    • 重新启动DevEco Studio并重试新建项目。
  2. 修改系统环境变量,优先使用DevEco Studio内置的Node.js:

    • 打开系统环境变量设置。
    • 在“系统变量”或“用户变量”中,找到Path变量。
    • 检查并确保指向你自行安装的Node.js目录(例如D:\nodejs)的路径不在Path变量中,或者其位置低于DevEco Studio的Node.js路径(E:\softwares\deveco\DevEco Studio\tools\node)。最好将DevEco Studio的Node.js路径移到最前面。
    • 修改后,重新启动计算机以使环境变量生效,然后重试。
  3. 在DevEco Studio内指定使用其自带的Node(如果上述无效):

    • 打开DevEco Studio。
    • 进入 File -> Settings -> Build, Execution, Deployment -> Build Tools -> hvigor
    • 检查“Node.js path”是否指向了DevEco Studio自带的Node(例如E:\softwares\deveco\DevEco Studio\tools\node\node.exe)。如果没有,请手动设置为此路径。
    • 应用设置并重启IDE。
  4. 检查HVIGOR_USER_HOME路径(根据错误提示):

    • 错误日志提示HVIGOR_USER_HOME路径不能包含空格。请检查系统环境变量中是否设置了HVIGOR_USER_HOME,如果设置了,确保其路径没有空格。如果没有设置,通常无需处理。

总结: 通常,执行第1步(以管理员身份清理缓存并检查权限)结合第2步(调整系统Path变量,让DevEco Studio的Node路径优先)即可解决此问题。这避免了卸载你全局安装的Node.js,两者可以共存。

回到顶部