Starter brachte den Daemon bei seiner ersten Logzeile um

Die Aufgabe scheiterte mit Code 1, abdulive.log gab es gar nicht. Ursache:

  & $node $main ingest 2>&1 | ForEach-Object { ... }

Windows PowerShell 5.1 verpackt jede stderr-Zeile eines nativen Programms
in einen ErrorRecord. Zusammen mit $ErrorActionPreference = Stop beendet
das sofort das ganze Skript - und der Daemon schreibt im Normalbetrieb
Warnungen auf stderr ("Kein Broadcaster-Token ..."). Er starb also an
seiner eigenen ersten Meldung, bevor irgendetwas ins Protokoll kam.

- launcher.ps1 startet jetzt ueber Start-Process mit getrennten
  Umleitungen fuer stdout und stderr, je Lauf rotiert
- install.ps1 ruft native Programme ueber eine Hilfsfunktion auf, die
  ErrorActionPreference kurz zurueckstellt
- NODE_OPTIONS=--disable-warning=ExperimentalWarning fehlte im Paket; im
  Container stand es in der Dockerfile

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AhVSfMFdWnXKCv5JfLnArZ
This commit is contained in:
ZeasyAlexandClaude Opus 5 committed 2026-09-09 18:13:00 +02:00
1 parent 56af15cf3f
commit 18421a1af0
3 files changed
+57 -10

No files matched your search

+26 -5
View File
@@ -59,9 +59,30 @@ $node = Join-Path $root 'node.exe'
$main = Join-Path $root 'app\apps\cli\main.ts'
if (-not (Test-Path $node)) { Write-Log "node.exe fehlt in $root"; exit 1 }
Write-Log 'Starte den Daemon.'
& $node $main ingest 2>&1 | ForEach-Object {
Add-Content -Path (Join-Path $log 'abdulive.log') -Value $_ -Encoding utf8
# Experimentelle Warnungen abschalten. node:sqlite meldet sich sonst bei
# jedem Start auf stderr - im Container stand das in der Dockerfile.
$env:NODE_OPTIONS = '--disable-warning=ExperimentalWarning'
$aus = Join-Path $log 'abdulive.log'
$fehler = Join-Path $log 'abdulive-fehler.log'
# Vorherigen Lauf beiseitelegen statt anzuhaengen: Start-Process kann nicht
# anhaengen, und ein Protokoll pro Lauf ist beim Suchen ohnehin angenehmer.
foreach ($f in @($aus, $fehler)) {
if (Test-Path $f) { Move-Item $f "$f.1" -Force }
}
Write-Log "Daemon beendet (Code $LASTEXITCODE)."
exit $LASTEXITCODE
Write-Log 'Starte den Daemon.'
# NICHT `& $node ... 2>&1 | ...` verwenden. Windows PowerShell 5.1 verpackt
# jede stderr-Zeile eines nativen Programms in einen ErrorRecord, und mit
# $ErrorActionPreference = 'Stop' beendet das sofort das ganze Skript. Der
# Daemon schreibt aber im Normalbetrieb Warnungen auf stderr ("Kein
# Broadcaster-Token ..."), und genau daran ist er beim ersten Versuch
# gestorben - noch bevor eine einzige Zeile im Protokoll stand.
$p = Start-Process -FilePath $node -ArgumentList @($main, 'ingest') `
-NoNewWindow -PassThru -Wait `
-RedirectStandardOutput $aus -RedirectStandardError $fehler
Write-Log "Daemon beendet (Code $($p.ExitCode))."
exit $p.ExitCode