Cli: [BUG] CI环境中的npx行为

创建于 2020-10-09  ·  14评论  ·  资料来源: npm/cli

这并不是一个真正的错误,但要提出它来讨论在CI环境中更改npx的潜在影响。

当前行为:

npx mocha
Need to install the following packages:
 mocha
Ok to proceed? (y)

npx -y mocha可以获取自动安装行为,但这将要求用户更新其CI脚本。

此外, npm @ 6中的npx -y mocha错误包括:

npx -y mocha
ERROR: You must supply a command.
Execute binaries from npm packages.
  npx [options] <command>[@version] [command-arg]...

我认为,跨多个Node.js / npm版本运行时,CI脚本中所需的逻辑会变得复杂。

_仅以Mocha为例。 在Node.js中,我们在GH Actions配置中使用npx ,我怀疑当GH Actions更新以使用包含像素会被破坏。

预期行为:

  • 不确定,但好奇是否有一种解决方法可以消除用户编辑脚本的需要。

重现步骤:

  • CI环境中的npx <module>

环境:

  • 所有CI环境

/ cc @MylesBorins @richardlau

Bug Release 7.x

最有用的评论

我们今天发布了7.0.6,有望解决此问题。 现在,如果您似乎正在CI环境中运行,我们将完全跳过该提示。

如果您仍然遇到问题,请告诉我们!

所有14条评论

@ruyadorno

@BethGriggs谢谢你让我们知道😄

值得一提的是,对于非交互式终端,我们将补丁(ref#1936) npx仅补丁到WARN而不是抛出错误,因此Unix管道的任何组合都可以避免提示/确认:

  • npx mocha < /dev/null

正如在松弛频道中所提到的: npm_config_yes=true npx mocha是它的有效npm6-7兼容版本

我们今天发布了7.0.0-rc.4,它在非交互式环境中运行时会跳过提示,但会显示警告。 这样一来,您仍然会收到有关正在安装某些东西的警报,但我们不会在CI环境中中断。

对于交互式环境,上述解决方法应该可以解决问题。

您能告诉我们@BethGriggs是否能解决您的问题吗?

我们今天发布了7.0.0-rc.4,它在非交互式环境中运行时会跳过提示,但会显示警告。 这样一来,您仍然会收到有关正在安装某些东西的警报,但我们不会在CI环境中中断。

对于交互式环境,上述解决方法应该可以解决问题。

您能告诉我们@BethGriggs是否能解决您的问题吗?

root<strong i="9">@localhost</strong> ~# npm install -g [email protected]
npm ERR! code MODULE_NOT_FOUND
npm ERR! Cannot find module 'agentkeepalive'
npm ERR! Require stack:
npm ERR! - /usr/local/lib/node_modules/npm/node_modules/make-fetch-happen/agent.js
npm ERR! - /usr/local/lib/node_modules/npm/node_modules/make-fetch-happen/index.js
npm ERR! - /usr/local/lib/node_modules/npm/node_modules/npm-registry-fetch/index.js
npm ERR! - /usr/local/lib/node_modules/npm/lib/utils/metrics.js
npm ERR! - /usr/local/lib/node_modules/npm/lib/npm.js
npm ERR! - /usr/local/lib/node_modules/npm/lib/cli.js
npm ERR! - /usr/local/lib/node_modules/npm/bin/npm-cli.js

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-10-10T03_17_28_890Z-debug.log

您能告诉我们@BethGriggs是否能解决您的问题吗?

我认为已经解决了减少在CI环境中的影响的问题,谢谢!

关闭,因为原始问题已解决。

@gengjiawen,如果您能够重现已更新的问题,请打开另一个问题,我们可以在那里进行讨论

FWIW,我在TravisCI中碰到了这个问题: https ://travis-ci.com/github/kentcdodds/advanced-react-hooks/builds/191260988

image

我认为@BethGriggs最初的关注仍然是个问题😬

hmmm🤔也许我们还应该在检查process.stdin.isTTY @nlf的基础上使用@npmcli/ci-detect检查环境

也是如此,它破坏了我们所有的CI脚本...为什么您在次要/补丁版本中引入了重大更改?

对于在Circle CI上遇到此问题的任何人,您都可以设置全局环境变量,以将所有工作的npm_config_yes变量设置为true

@FezVrasta更改来自7.0.0 Semver-Major更改。 我们以为我们通过检查TTY来解决了CI问题,但似乎有些遗漏的案例。 看起来#2047已打开,有望在更多CI环境中解决此问题

我们今天发布了7.0.6,有望解决此问题。 现在,如果您似乎正在CI环境中运行,我们将完全跳过该提示。

如果您仍然遇到问题,请告诉我们!

现在为我们工作: https

感谢您的快速修复!

问题:当npx7提示,然后用户安装缺少的软件包时,

  1. 包裹存放在哪里? 显然,它没有作为全局npm软件包安装。
  2. 如何强制npx make检查并下载“ makes”的最新版本? 我们遇到了npx品牌被本地安装的旧版本“品牌”困住的麻烦。
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Cohen-Carlisle picture Cohen-Carlisle  ·  4评论

1000i100 picture 1000i100  ·  3评论

jaydenseric picture jaydenseric  ·  3评论

FaizenR picture FaizenR  ·  3评论

darcyclarke picture darcyclarke  ·  4评论