ERR_PNPM_ENOENT ENOENT: no such file or directory, scandir的解决方案

pnpm 在处理依赖安装时,一个名为 jsonfile (或依赖它的某个包) 的库创建了临时目录 (jsonfile_tmp_*),但在后续操作中无法找到它,导致了 ENOENT (No such file or directory) 错误。

你尝试的手动删除临时目录和使用 --force 都没有解决问题,这说明问题根源不在于那个临时的文件夹本身,而在于导致这个临时文件夹处理异常的深层原因

这通常是由以下几种情况之一引起的:

  1. pnpm 缓存或 node_modules 状态损坏:最常见的原因。某些文件处于不一致或损坏的状态。

  2. 文件系统权限或干扰:在 Windows 上,杀毒软件、系统索引服务或权限问题可能会锁定或瞬间删除 pnpm 正在操作的文件,导致竞争条件(race condition)。

  3. pnpm 版本 Bug:在极少数情况下,可能是你使用的 pnpm 版本存在特定的 bug。


解决方案:彻底清理法(推荐,成功率最高)

请严格按照以下步骤操作,这会彻底重置所有可能出问题的环节。

第一步:彻底清理项目状态

在你的项目根目录 (E:\react\ark) 打开终端(PowerShell 或 CMD),然后执行以下命令:

  1. 删除 node_modules 文件夹

    这个文件夹是问题的核心,必须整个删掉,而不是只删里面的临时文件。

    codePowershell

    复制代码
    # 强制递归删除整个 node_modules 目录
    Remove-Item -Recurse -Force node_modules
  2. 删除 pnpm-lock.yaml 文件

    这个锁文件可能记录了错误或不一致的依赖树信息。

    codePowershell

    复制代码
    # 删除锁文件
    Remove-Item -Force pnpm-lock.yaml
  3. 清理 pnpm 的全局缓存

    这是最关键的一步,因为损坏的包可能就存在于缓存中。

    codePowershell

    复制代码
    pnpm store prune

    这个命令会清理掉缓存中未被引用的包,有时就能解决问题。

第二步:重新安装

现在你的项目环境已经非常干净了,像第一次克隆下来一样。重新执行安装命令:

codePowershell

复制代码
# 不再需要 --force,正常安装即可
pnpm install --filter mobile

如果上述方法仍然失败,请尝试以下进阶方案

方案 A:检查并更新 pnpm 版本

旧版本的 pnpm 可能有 bug。

codePowershell

复制代码
# 查看当前 pnpm 版本
pnpm -v

# 更新 pnpm 到最新版
pnpm add -g pnpm

# 之后再重复"彻底清理法"的步骤
方案 B:以管理员身份运行终端

文件权限问题在 Windows 上很常见。

  1. 右键点击 PowerShell 或 CMD 图标。

  2. 选择 "以管理员身份运行"。

  3. 在打开的管理员终端里,cd 到你的项目目录。

  4. 重复"彻底清理法"的步骤。

方案 C:排除外部程序干扰

暂时禁用你的杀毒软件、防火墙或任何可能监控文件系统的软件,然后再次尝试"彻底清理法"。这类软件有时会错误地将 pnpm 的高速文件操作判断为恶意行为并进行阻止。

总结

请先严格执行"彻底清理法"。按照这个顺序,95% 以上的类似问题都能得到解决。

  1. Remove-Item -Recurse -Force node_modules

  2. Remove-Item -Force pnpm-lock.yaml

  3. pnpm store prune

  4. pnpm install --filter mobile

这个问题的本质是 pnpm 在进行原子文件写入(先写临时文件,再重命名)的过程中被打断或失败,导致状态不一致。彻底的清理可以保证 pnpm 从一个已知的、正确的状态重新开始整个依赖解析和安装过程。

相关推荐
一起学开源13 小时前
一文读懂 ReAct 范式:让 AI Agent 真正学会“思考+行动“
java·javascript·react.js·ecmascript·react·alibaba·智能体开发
ZengLiangYi17 小时前
React Query + REST API 最佳实践
javascript·后端·react.js
RANxy20 小时前
零基础全栈 React 入门(四):React Router 路由配置
前端·react.js
触底反弹20 小时前
给 Claude 装上 27 个「外挂」后,我直接起飞了!
人工智能·react.js
咖啡星人k21 小时前
从需求到交付:我用MonkeyCode的AI Agent完成了一个React数据看板
前端·人工智能·react.js·monkeycode
微扬嘴角1 天前
React快速入门
前端·react.js·前端框架
喵了几个咪1 天前
AI重构软件开发范式:框架与脚手架为何仍是生产级开发的刚需?
vue.js·人工智能·react.js·重构·golang·ai编程
ImTryCatchException1 天前
React Native 嵌入现有 Android 项目:踩坑记录与解决方案
android·react native·react.js
小二·1 天前
Prompt Engineering 高级技巧:CoT/ToT/ReAct 等进阶方法论实战
前端·react.js·prompt
chancygcx_1 天前
前端框架React day1--React入门
前端·react.js·前端框架