Fiks Windows-oppstart: git-symlink og PowerShell-server
To uavhengige feil hindret oppstart på Windows:
1. app/notes var committet som en git-symlink (mode 120000). På
Windows uten symlink-støtte materialiseres den som en stray
tekstfil («../notes»), så appen ikke fant notatene. Start.bat
sin reparasjon brukte rmdir/mkdir som begge feiler når notes
er en fil.
→ Avregistrert symlinken fra git og gitignorert den. app/notes
opprettes nå per plattform av launcherne (symlink på unix,
kopi på Windows). Start.bat normaliserer robust: sletter en
stray fil, lager mappe og kopierer *.md. Start.sh håndterer
også fil-tilfellet.
2. server.ps1 krasjet umiddelbart pga. Add-Type System.Web (ikke
tilgjengelig i PowerShell 7), og cmd-vinduet forsvant uten pause.
→ Fjernet System.Web (bruker System.Uri::UnescapeDataString),
la til HttpListener-støttesjekk og tydelige feilmeldinger.
Start.bat pauser nå når serveren stopper, så feil kan leses.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
28
server.ps1
28
server.ps1
@@ -9,16 +9,36 @@ param(
|
||||
[string]$Root = "."
|
||||
)
|
||||
|
||||
Add-Type -AssemblyName System.Web
|
||||
# Krasj ikke stille: vis full feil og stopp pent.
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Merk: vi bruker [System.Uri]::UnescapeDataString for URL-dekoding i stedet
|
||||
# for System.Web.HttpUtility. System.Web er ikke tilgjengelig i PowerShell 7
|
||||
# (.NET Core) og kan faile pa enkelte oppsett — det var en kilde til at
|
||||
# vinduet "krasjet umiddelbart". System.Uri finnes i bade PS 5.1 og PS 7.
|
||||
|
||||
try {
|
||||
$RootAbs = (Resolve-Path -LiteralPath $Root -ErrorAction Stop).Path
|
||||
} catch {
|
||||
Write-Host "Fant ikke app-mappen: $Root" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
if (-not ([System.Net.HttpListener]::IsSupported)) {
|
||||
Write-Host "HttpListener stottes ikke pa denne maskinen." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
$RootAbs = (Resolve-Path -LiteralPath $Root).Path
|
||||
$listener = New-Object System.Net.HttpListener
|
||||
$listener.Prefixes.Add("http://127.0.0.1:$Port/")
|
||||
|
||||
try {
|
||||
$listener.Start()
|
||||
} catch {
|
||||
Write-Host "Klarte ikke starte server pa port ${Port}: $($_.Exception.Message)" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
Write-Host " Klarte ikke starte server pa port ${Port}:" -ForegroundColor Red
|
||||
Write-Host " $($_.Exception.Message)" -ForegroundColor Red
|
||||
Write-Host " Tips: porten kan vaere opptatt, eller en brannmur/policy blokkerer." -ForegroundColor DarkGray
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -57,7 +77,7 @@ try {
|
||||
$res = $context.Response
|
||||
|
||||
try {
|
||||
$path = [System.Web.HttpUtility]::UrlDecode($req.Url.LocalPath)
|
||||
$path = [System.Uri]::UnescapeDataString($req.Url.LocalPath)
|
||||
if ([string]::IsNullOrEmpty($path) -or $path -eq '/') { $path = '/index.html' }
|
||||
|
||||
# Strip leading slash and normalize
|
||||
|
||||
Reference in New Issue
Block a user