工作区“子包”中的 npm 配置列表会导致 ENOWORKSPACES

Eli*_*ias 6 azure node.js npm azure-devops

我有以下项目结构:

\n
workspace_test\n\xe2\x94\x82   package.json\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dist\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80libs\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80pkg\n                package.json\n
Run Code Online (Sandbox Code Playgroud)\n

包含npm 工作workspace_test/project.json

\n
workspace_test\n\xe2\x94\x82   package.json\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dist\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80libs\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80pkg\n                package.json\n
Run Code Online (Sandbox Code Playgroud)\n

,dist/libs/pkg/package.json是编译的输出,不包含任何重要的内容(我只是npm init -y出于测试目的使用它来初始化它)。

\n

如果我npm config list在项目的根目录中运行,我会成功地从中获取输出。但是如果我在内部运行它dist/libs/pkg,我会得到以下错误输出:

\n
npm ERR! code ENOWORKSPACES\nnpm ERR! This command does not support workspaces.\n\nnpm ERR! A complete log of this run can be found in: C:\\Users\\Elias\\AppData\\Local\\npm-cache\\_logs\\2023-07-05T07_00_50_459Z-debug-0.log\n
Run Code Online (Sandbox Code Playgroud)\n

调试日志似乎没有提供任何更多相关细节。

\n

我该如何解决这个问题?

\n

再生产:

\n

运行以下命令来重现该问题:

\n
mkdir workspace_test\ncd workspace_test\nmkdir dist/libs/pkg\ncd dist/libs/pkg\nnpm init -y\n
Run Code Online (Sandbox Code Playgroud)\n

添加。"workspaces": ["dist/libs/*"]workspace_test/project.json确保 shell 仍在 中dist/libs/pkg,然后运行以下命令就会出现问题:

\n
npm config list\n
Run Code Online (Sandbox Code Playgroud)\n

版本:

\n

应该是最新的稳定版,因为我已经尝试升级它们以解决手头的问题。

\n
node : v18.16.1\nnpm  : 9.7.2\n
Run Code Online (Sandbox Code Playgroud)\n

其他背景信息(Azure Pipelines):

\n

这整个考验是在天蓝色的发布管道中发生的。因此作为 azure 提供的 Npm@1 任务,它尝试npm config list在包工件中运行。我发现跑步npm config list --no-workspaces有效,但我认为我无法控制参数。

\n

任务如下所示:

\n
{\n  "name": "project",\n  "version": "1.0.0",\n  "description": "",\n  "main": "index.js",\n  "workspaces": [\n    "dist/libs/*"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n