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

执行pnpm install时遭遇ERR_PNPM_ENOENT错误求助

排查与解决ERR_PNPM_ENOENT文件复制失败问题

核心问题定位

你遇到的是pnpm在hoisted模式下,无法将仓库内文件复制到项目node_modules临时路径的异常,源文件存在但目标路径文件缺失,且错误文件随机变化,结合VS Code开发容器的挂载场景,大概率和跨文件系统挂载的兼容性或pnpm 9.x版本的特定bug有关。

分步解决方案

1. 降级pnpm到8.x稳定版

pnpm 9.0.x作为大版本迭代的初期版本,存在hoisted模式下的文件复制逻辑bug,先降级到成熟稳定的8.x分支:

pnpm add -g pnpm@latest-8

执行完成后重新运行pnpm install验证。

2. 将pnpm仓库迁移到容器内部目录

挂载目录(本地→容器)的文件系统差异(如APFS与ext4的元数据处理差异)会导致文件复制异常,把pnpm仓库移到容器内非挂载路径:

  • 删除项目根目录.npmrc中指定store-dir的配置行(如果存在)
  • 执行命令设置容器内仓库路径:
pnpm config set store-dir /home/vscode/.pnpm-store

清理旧缓存后重装:

pnpm store prune
pnpm install

3. 调整VS Code容器挂载的一致性模式

修改.devcontainer/devcontainer.json中的挂载配置,调整文件系统同步策略:

"mounts": [
  "source=${localWorkspaceFolder},target=/home/vscode/Developer,type=bind,consistency=delegated"
]
  • macOS用户推荐consistency=delegated
  • Windows/Linux用户可尝试consistency=cached或consistency=consistent

修改后重启开发容器,再执行pnpm install。

4. 彻底清理项目残留文件后重装

删除项目内的node_modules和锁文件,避免残留缓存干扰:

rm -rf node_modules pnpm-lock.yaml
pnpm install

5. 检查并修复临时目录权限

确认pnpm可访问系统临时目录:

# 查看当前临时目录路径
echo $TMPDIR
# 检查目录权限
ls -ld $TMPDIR

如果权限不足,修改临时目录权限:

sudo chmod 777 $TMPDIR

或指定pnpm使用自定义临时目录:

pnpm config set tmpdir /home/vscode/.pnpm-tmp
mkdir -p /home/vscode/.pnpm-tmp

验证步骤

如果上述步骤仍未解决,可在容器内非挂载目录创建测试项目,直接安装chainlit:

mkdir /home/vscode/test-chainlit && cd $_
pnpm init -y
pnpm install chainlit

若测试项目安装成功,说明问题出在原项目的挂载目录或项目配置上;若仍失败,需检查容器的基础镜像是否存在文件系统权限或依赖缺失问题。

内容的提问来源于stack exchange,提问作者Mayaank Vadlamani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:42:54