我正在尝试为 NX 项目做出贡献,但我在尝试安装依赖项时在开发容器上遇到错误。
VSCode 开发容器扩展构建容器,并成功运行
sudo apt-get update && sudo apt-get -y upgrade
命令,但是当它尝试运行 pnpm install 时,它会抛出错误
ERR_PNPM_ENOENT ENOENT: no such file or directory, copyfile '/workspaces/nx/.pnpm-store/v3/files/4e/e1c88f8c3f4e4cd34cb6c00339bf9d6d036ff4ade3af49e871cc8966b84c729d8b75492acc6413c9a664ac00a57958223ac13c4229da8c62ebe6a53e4f783f' -> '/workspaces/nx/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/ts-node_tmp_767/dist/cjs-resolve-hooks.d.ts'
我曾多次尝试重建容器,并直接运行
pnpm install
,但第一个抛出相同的错误,而第二个抛出Error: Cannot find module '/home/node/.vscode-server/data/User/workspaceStorage/d79600a30618d2a2c36ab67ceb766aae/ms-vscode.js-debug/bootloader.js'
这是我第一次使用开发容器,所以我不知道如何处理错误。
pnpm 使用内容可寻址存储来管理依赖项。开发容器通常从主机的文件系统挂载项目目录(例如,
/workspaces/nx
),依赖于主机的可用目录结构。
因此这些依赖项可能最终会出现在挂载的目录中,这可以通过
pnpm store path
命令来确认。为了避免兼容性问题或文件访问权限错误,pnpm 可以配置为使用容器本身内的本地目录作为其存储:
pnpm config set store-dir ~/.local/share/pnpm/store
注意:需要删除
node_modules
并重新安装依赖项(pnpm install
)。
附加信息:
pnpm 可以跨多个驱动器或文件系统工作吗?
软件包存储应与安装位于同一驱动器和文件系统上,否则软件包将被复制,而不是链接。这是由于硬链接工作方式的限制,一个文件系统上的文件无法寻址另一个文件系统中的位置。