尝试构建 NX 开发容器时出错

问题描述 投票:0回答:1

我正在尝试为 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'

这是我第一次使用开发容器,所以我不知道如何处理错误。

docker nrwl vscode-devcontainer devcontainer
1个回答
0
投票

pnpm 使用内容可寻址存储来管理依赖项。开发容器通常从主机的文件系统挂载项目目录(例如,

/workspaces/nx
),依赖于主机的可用目录结构。

因此这些依赖项可能最终会出现在挂载的目录中,这可以通过

pnpm store path
命令来确认。为了避免兼容性问题或文件访问权限错误,pnpm 可以配置为使用容器本身内的本地目录作为其存储:

pnpm config set store-dir ~/.local/share/pnpm/store

注意:需要删除

node_modules
并重新安装依赖项(
pnpm install
)。

附加信息:

pnpm 可以跨多个驱动器或文件系统工作吗?

软件包存储应与安装位于同一驱动器和文件系统上,否则软件包将被复制,而不是链接。这是由于硬链接工作方式的限制,一个文件系统上的文件无法寻址另一个文件系统中的位置。

© www.soinside.com 2019 - 2024. All rights reserved.