You need to enable JavaScript to run this app. 升级MacOS 10.15.7后Parallels内VS Node.js项目报too many open files求助
优惠活动
大模型
产品
解决方案
定价
更多

升级MacOS 10.15.7后Parallels内VS Node.js项目报too many open files求助

问题核心定位

此前在Mac终端执行的sudo launchctl limit maxfiles 65536 200000调整的是Mac宿主机自身的文件句柄上限,本次报错的EMFILE: too many open files来自Parallels运行的Windows虚拟机内部的进程资源限制,宿主机的配置修改没有触达虚拟机的资源管控链路,因此操作完全无效。
从异常现象判断,macOS 10.15.7升级后,Parallels的共享文件夹映射层存在文件句柄泄漏的兼容问题:控制台应用扫描文件量少,不会触发句柄耗尽;Web项目需要一次性加载node_modules下上千个依赖文件,会快速耗尽映射层的句柄配额,直接报出成百上千行的文件打开失败错误。

可落地解决步骤
  • 调整项目运行路径,绕开Parallels共享映射层
    当前报错路径c:\Users\chris\github\CollegeTennisRanks\...本质是Parallels把Mac本地的github目录映射成了Windows的盘内路径,并非真正存在于Windows虚拟机磁盘内。将项目完整复制到Windows虚拟机内部的本地磁盘路径下(比如C:\Dev\CollegeTennisRanks),重新用Visual Studio打开本地路径的项目运行,可直接规避映射层的句柄泄漏问题。
  • 调整Windows虚拟机内部的文件句柄配置
    如果项目迁移到虚拟机本地磁盘后仍存在偶发报错,需要在Windows系统内(非Mac终端)调整配置:
    • 以管理员身份打开Windows命令提示符,执行命令fsutil behavior set memoryusage 2,提升Windows系统可用的非分页缓存池大小,增加系统层面的文件句柄配额
    • 暂停Windows Search服务,取消项目文件夹的内容索引权限,避免索引进程抢占文件句柄
  • 减少Visual Studio对node_modules的不必要扫描
    报错日志里的Source Map预加载逻辑,是VS会主动扫描全量node_modules下的文件生成预加载缓存,在句柄配额不足时会快速触发EMFILE报错:
    • 打开VS设置面板,进入「工具-选项-项目和解决方案-TypeScript/JavaScript」,取消勾选「启用对生成的脚本的Source Map预加载」
    • 删除项目目录下的obj临时文件夹(就是报错路径里obj/Release/Package/PackageTmp对应的目录,属于VS打包生成的冗余临时文件,会被重复扫描占用句柄),重新还原项目依赖后再运行
  • 修正Parallels的共享配置兼容设置
    • 打开Parallels虚拟机配置面板,进入「硬件-共享文件夹」,将共享模式从「共享Mac」切换为「仅主机共享」
    • 将Parallels版本更新至15.1.3及以上,该版本已修复macOS 10.15.7环境下共享文件夹的文件句柄泄漏已知问题

内容的提问来源于stack exchange,提问作者Chris H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 02:36:04