Cli: [BUG] npx-Verhalten in CI-Umgebungen

Erstellt am 9. Okt. 2020  ·  14Kommentare  ·  Quelle: npm/cli

Dies ist kein wirklicher Fehler, aber es wird angesprochen, um die möglichen Auswirkungen von Änderungen an npx in CI-Umgebungen zu erörtern.

Aktuelles Verhalten:

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

npx -y mocha funktioniert, um das automatische Installationsverhalten zu erhalten, aber dazu müssten Benutzer ihre CI-Skripte aktualisieren.

Außerdem npx -y mocha Fehler in npm @ 6 mit:

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

Ich denke, dies würde die in CI-Skripten erforderliche Logik komplizieren, wenn mehrere Node.js / npm-Versionen ausgeführt werden.

_Nur am Beispiel von Mokka. In Node.js verwenden wir npx in unserer GH Actions-Konfiguration , von der ich vermute, dass sie beschädigt wird, wenn GH Actions aktualisiert wird, um eine Version von Node.js zu verwenden, die

Erwartetes Verhalten:

  • Unsicher, aber neugierig, ob es eine Problemumgehung geben könnte, bei der Benutzer ihre Skripte nicht mehr bearbeiten müssen.

Schritte zum Reproduzieren:

  • npx <module> in einer CI-Umgebung.

Umgebung:

  • Alle CI-Umgebungen

/ cc @MylesBorins @richardlau

Bug Release 7.x

Hilfreichster Kommentar

Wir haben heute 7.0.6 veröffentlicht, das dies hoffentlich beheben sollte. Wir überspringen die Eingabeaufforderung jetzt vollständig, wenn Sie scheinbar in einer CI-Umgebung ausgeführt werden.

Lassen Sie uns wissen, wenn Sie weiterhin Probleme haben!

Alle 14 Kommentare

@ruyadorno erwähnte in dem Könnte jemand für diese Entscheidung einen Link zum Kontext

hi @BethGriggs danke, dass du uns informiert hast 😄

Es ist erwähnenswert, dass wir für nicht interaktive Terminals npx nur auf WARN patchen (Ref. 1936), anstatt zu werfen, sodass jede Kombination von Unix-Pipelines auch die Aufforderung / Bestätigung vermeiden würde:

  • npx mocha < /dev/null

Wie auch im Slack-Kanal erwähnt: npm_config_yes=true npx mocha ist die funktionierende npm6-7-kompatible Version davon

Wir haben heute 7.0.0-rc.4 veröffentlicht, das die Eingabeaufforderung überspringt, aber eine Warnung ausgibt, wenn es in einer nicht interaktiven Umgebung ausgeführt wird. Auf diese Weise werden Sie immer noch benachrichtigt, dass etwas installiert wird, aber wir brechen in CI-Umgebungen nicht ab.

Für interaktive Umgebungen sollte die oben beschriebene Problemumgehung ausreichen.

Können Sie uns mitteilen, ob dies Ihr Problem bei BethGriggs behebt?

Wir haben heute 7.0.0-rc.4 veröffentlicht, das die Eingabeaufforderung überspringt, aber eine Warnung ausgibt, wenn es in einer nicht interaktiven Umgebung ausgeführt wird. Auf diese Weise werden Sie immer noch benachrichtigt, dass etwas installiert wird, aber wir brechen in CI-Umgebungen nicht ab.

Für interaktive Umgebungen sollte die oben beschriebene Problemumgehung ausreichen.

Können Sie uns mitteilen, ob dies Ihr Problem bei BethGriggs behebt?

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

Können Sie uns mitteilen, ob dies Ihr Problem bei BethGriggs behebt?

Ich denke, das Problem wurde behoben, um die Auswirkungen in CI-Umgebungen zu verringern, danke!

Schließen, da das ursprüngliche Problem behoben ist.

@gengjiawen Wenn Sie das Problem, das Sie aktualisiert haben, reproduzieren können, öffnen Sie bitte ein anderes Problem, und wir können es dort diskutieren

FWIW, ich bin in TravisCI darauf gestoßen: https://travis-ci.com/github/kentcdodds/advanced-react-hooks/builds/191260988

image

Ich denke, dass das ursprüngliche Anliegen von @BethGriggs immer noch ein Problem ist 😬

hmmm 🤔 vielleicht sollten wir auch mit @npmcli/ci-detect nach der Umgebung suchen, zusätzlich zu process.stdin.isTTY @nlf ?

Auch dies hat alle unsere CI-Skripte beschädigt ... Warum haben Sie eine grundlegende Änderung in einer Minor / Patch-Version eingeführt?

Für alle , mit diesem Problem auf Kreis CI, können Sie eine globale Umgebungsvariable , die setzen npm_config_yes Variable true für alle Ihre Jobs

@FezVrasta die Änderung kam in der 7.0.0 Semver-Major-Änderung. Wir dachten, wir hätten das CI-Problem behoben, indem wir nach TTY gesucht haben, aber es scheint, dass wir Randfälle übersehen haben. Es sieht so aus, als ob # 2047 offen ist, um dies hoffentlich für weitere CI-Umgebungen zu beheben

Wir haben heute 7.0.6 veröffentlicht, das dies hoffentlich beheben sollte. Wir überspringen die Eingabeaufforderung jetzt vollständig, wenn Sie scheinbar in einer CI-Umgebung ausgeführt werden.

Lassen Sie uns wissen, wenn Sie weiterhin Probleme haben!

Funktioniert jetzt für uns: https://github.com/testing-library/react-testing-library/pull/809/files

Vielen Dank für die schnelle Lösung!

Frage: Wenn npx7 dazu auffordert und der Benutzer das fehlende Paket installiert,

  1. Wo ist das Paket aufbewahrt? Anscheinend ist es nicht als globales npm-Paket installiert.
  2. Wie erzwinge ich, dass npx-Marken die neueste Version von "Marken" überprüfen und herunterladen? Wir haben Probleme, dass npx make mit der lokal installierten alten Version von "make" gefangen ist.
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen