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

相关推荐
1***s63227 分钟前
React区块链开发
前端·react.js·区块链
我很忙651 小时前
WHM-PF:优化翻页体验的高性能React翻页插件
react.js
p***h6432 小时前
React数据分析应用
前端·react.js·前端框架
h***83932 小时前
React虚拟现实开发
前端·react.js·vr
7***n752 小时前
React虚拟现实案例
前端·react.js·vr
safestar201216 小时前
React深度实战:从组件抽象到性能优化的思考历程
前端·javascript·react.js
LFly_ice20 小时前
学习React-23-React-router
前端·学习·react.js
一个处女座的程序猿O(∩_∩)O1 天前
React Router 路由模式详解:HashRouter vs BrowserRouter
前端·react.js·前端框架
Cxiaomu1 天前
React Native 集成 TRTC实时音视频实战指南
react native·react.js·实时音视频
一只小阿乐2 天前
react 状态管理mobx中的行为模式
前端·javascript·react.js·mobx·vue开发·react开发