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 从一个已知的、正确的状态重新开始整个依赖解析和安装过程。

相关推荐
. . . . .9 小时前
基于React的开源框架Next.js、UmiJS、Ant Design Pro
javascript·react.js·开源
listhi5209 小时前
React Hooks 实现表单验证
前端·javascript·react.js
量子-Alex9 小时前
【大模型与智能体论文】REACT:协同语言模型中的推理与行动
前端·react.js·语言模型
风清云淡_A13 小时前
【REACT16】react老项目版本依赖适配问题
前端·react.js
前端小咸鱼一条13 小时前
16.React性能优化SCU
前端·react.js·性能优化
im_AMBER13 小时前
React 09
前端·javascript·笔记·学习·react.js·前端框架
前端小咸鱼一条14 小时前
19. React的高阶组件
前端·javascript·react.js
.生产的驴16 小时前
React 路由权限跳转 Token判断 路由控制 登录状态控制
前端·javascript·react.js·ajax·前端框架·c#·ecmascript