You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vagrant虚拟机中无法运行Node.js 18.18.0及以上版本的npm命令

Vagrant虚拟机中无法运行Node.js 18.18.0及以上版本的npm命令

我之前也碰到过几乎一模一样的问题!折腾了好一阵才找到根源,跟你分享下我的解决思路和办法:

首先,你遇到的这些ENOTSUP错误,本质上是Vagrant默认的共享文件夹(比如VirtualBox的vboxsf)和Node.js 18.18+版本的文件系统操作不兼容导致的。Node.js从18.18.0开始调整了部分文件IO相关的逻辑,而vboxsf这类共享文件系统不支持它用到的某些socket操作,就触发了报错。

下面是几个可行的解决办法:

  • 改用rsync同步文件夹(推荐)
    rsync是把本地文件直接复制到虚拟机内部,而非实时挂载,完全规避了文件系统兼容性问题。你只需要修改Vagrantfile,把默认的共享文件夹配置改成:

    config.vm.synced_folder "./", "/vagrant", type: "rsync", rsync__auto: true
    

    其中rsync__auto: true会自动同步本地文件的变更到虚拟机里。修改后执行vagrant reload重启虚拟机,再进入虚拟机重新执行npm命令就正常了。

  • 尝试NFS共享文件夹
    如果需要实时双向同步(本地改了虚拟机立刻生效,反之亦然),可以用NFS类型的共享。修改Vagrantfile:

    config.vm.synced_folder "./", "/vagrant", type: "nfs"
    

    注意NFS在Linux/macOS主机上比较好配置,Windows主机可能需要额外安装NFS服务端,步骤会麻烦一些。执行vagrant reload时可能需要输入主机的管理员密码来配置NFS。

  • 临时降级Node.js版本
    如果暂时不想改Vagrant配置,可以先把Node.js降级到18.17.x版本(比如用nvm:nvm install 18.17.1 && nvm use 18.17.1),这个版本还没引入导致兼容性问题的文件IO变更,能暂时解决问题,等Vagrant或VirtualBox更新后再升级。

  • 清理缓存后重试(治标不治本)
    你可以先尝试删除虚拟机里项目目录下的node_modules和package-lock.json,然后重新执行npm install,不过这个方法大概率只能临时缓解,后续操作可能还会触发同样的错误,因为核心的挂载问题没解决。

备注:内容来源于stack exchange,提问作者BadIdeaException

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:50:28