nodejs / nodejs/node

--watch-path restarts on unrelated directory touch when --env-file is set

Offen
#61,906 2 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

watch-mode
Vorherrschende Sprache
JavaScript
Sterne
122k
Forks
37.3k
Ø Merge
4 T. 2 Std.
Gemergte PRs (30 T.)
283

Beschreibung

Version
  • Node.js: v24.13.0
  • OS: macOS
Reproduction

Setup:

mkdir -p /tmp/node-watch-envfile-repro/watched /tmp/node-watch-envfile-repro/unrelated
cd /tmp/node-watch-envfile-repro

echo "FOO=bar" > .env

echo "console.log('START', JSON.stringify({ pid: process.pid, ts: Date.now(), foo: process.env.FOO ?? null }));" > watched/server.js
echo "setInterval(() => {}, 1000);" >> watched/server.js

Run with --env-file and touch an unrelated path:

cd /tmp/node-watch-envfile-repro

node --watch-path=watched --env-file=.env watched/server.js > out-env.log 2>&1 &
PID=$!

sleep 2
touch unrelated
sleep 2

kill $PID
cat out-env.log

Observed output:

START {"pid":58939,"ts":1771621917212,"foo":"bar"}
Restarting 'watched/server.js'
START {"pid":58948,"ts":1771621919442,"foo":"bar"}

Now run without --env-file:

cd /tmp/node-watch-envfile-repro

node --watch-path=watched watched/server.js > out-no-env.log 2>&1 &
PID=$!

sleep 2
touch unrelated
sleep 2

kill $PID
cat out-no-env.log

Observed output:

START {"pid":59279,"ts":1771621950778,"foo":null}
Expected behavior

When --watch-path=watched is set, touching unrelated should not trigger a restart, regardless of whether --env-file is used.

Actual behavior

With --env-file=.env, touching unrelated triggers a restart.
Without --env-file, touching unrelated does not restart.

Notes

This was first noticed in a larger workspace where:

node --watch-path=apps/server/dist-dev --env-file=.env apps/server/dist-dev/server.js

restarts when running:

touch apps/client/dist/

The reduced test case above reproduces the same behavior.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, die bereitgestellte macOS-Reproduktion mit und ohne --env-file auszuführen, wobei du dich auf die Handhabung von Node.js watch-path und die Interaktion mit dem --env-file-Einstiegspunkt konzentrierst. Verfolge, wo Dateisystempfade zum Überwachen ausgewählt werden, und füge einen Regressionstest hinzu oder aktualisiere ihn, sodass das Berühren von Unabhängigem den Prozess nicht neu startet; führe die Reproduktion und die relevanten watch-Tests erneut aus, um das Verhalten zu bestätigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js
Bereich
cli, tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
64/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.