Raketenwilli: Zwei Server (auf Port 8080 mit Dateisystemwurzel as Docroot und für ganze Netz?)

Beitrag lesen

jetzt funktioniert es.

Das könnte man meinen.

Mich verwirrt aber

[0] Starting up http-server, serving ./
[1] Starting up http-server, serving http://localhost:1234/index.html
[0]
…
[0] http-server version: 14.1.1
[0] Available on:
[0]   http://localhost:1234
[0] Hit CTRL-C to stop the server
…
[1] http-server version: 14.1.1
[1] Available on:
[1]   http://192.168.178.21:8080
[1]   http://127.0.0.1:8080
[1] Hit CTRL-C to stop the server

Hast Du zwei HTTP-Server mit npm gestartet?

Immerhin ist ja einer der beiden (auf Port 8080) offenbar vom gesamten Netz aus erreichbar und zeigt (wohl) Dein gesamtes Dateisystem!.

Und in der gezeigten package.json steht nichts, aber auch gar nichts, was diesen startet.

Jetzt noch was zur Fehlermeldung…

"scripts": {
    "open": "concurrently \"http-server -a localhost -p 1234\" \"open http://localhost:1234/index.html\"",
    "serverbrowser": "concurrently \"http-server -a localhost -p 1234\" \"http-server http://localhost:1234/index.html\""
  },

Das sieht falsch aus: Dein "Serverbrowser" versucht zwei mal den Webserver auf Port 1234 zu starten!

Ich hatte übrigens geschrieben:

"serverbrowser": 
    "concurrently 
       \"http-server -a localhost -p 1234\"
       \"chromium-browser http://localhost:1234/index.html\"
    "

(jetzt aber mit extra-Zeilenumbrüchen)

Ich „nehme jetzt mal auseinander“, was Du notieren solltest:

//  registriere folgende Befehle für den Start mit `npm run[-script]`
"scripts": {

// Name eines Scriptes:
"serverbrowser":

// Es das Package „concurrently“ wird aufgerufen,
//  welches einen Befehl/Programm starten kann, 
//  nicht auf dessen Ergebnis wartet
//  und einen weiteren Befehl/Programm startet:
"concurrently

// Starte das nodejs-Modul http-server, übergib als Argument
//  \"http-server -a localhost -p 1234\"
// Der läuft dann im Hintergrund

// Starte das Programm „chromium-browser“
//  es soll gleich die Webseite öffnen:
    \"chromium-browser http://localhost:1234/index.html\"

// Liste der Skripte/Programme schließen:
"

„chromium-browser" ist hierbei der Browser in meinem System. Du müsstest dort etwas eintragen, was Deinen Browser startet und eine Webseite öffnet. Also: Wie startest Du Deinen Edge in einem Terminal? (Ich sitze am Raspi mit Linux und habe gerade keine Lust, den großen Rechner zu starten und Windows zu booten um das herauszufinden)

Vermutlich bezieht sich die Fehlermeldung „Der Befehl open“ sei „falsch geschrieben oder konnte nicht gefunden werden“ darauf, dass das originale

"open http://localhost:1234/index.html"

als zweiter Teil Deines ursprünglichen „Skriptes“ fehl schlug. (Der erste sollte den Webserserver starten.)

Ich denke, das npm-open dazu das Betriebssystem befragt, welche Anwendung wohl http://links öffnen soll und wie die URL zu übergeben ist. Und dummerweise heißt dieses Stücken im internen Skript auch „open". Dieses „open“ hat entweder nichts gefunden oder einen Eintrag gefunden, der auf ein nicht existierendes Programm zeigte.

Mithin: Was passiert bei Dir, wenn Du einen Link, z.B. in einem PDF, anklickst?

Ich will aber nicht ausschließen, dass dieses „open“ (also das npm-Modul open) unter Windows entweder nicht funktioniert (soll es aber) oder aber Nacharbeit bzw. Tuning benötigt. Denn bei mir funktioniert es ja „out of the box“.

Vielleicht musst Du ja den „appname“ angeben?

In der verlinkten Doc für das npm-Modul „open“ finde ich nämlich unter anderem sowas:

// Specify app arguments.
await open('https://sindresorhus.com', {app: {name: 'google chrome', arguments: ['--incognito']}});

Jetzt addieren wir das mal zusammen:

"serverbrowser": 
    "concurrently 
       \"http-server -a localhost -p 1234\"
       \"open('https://localhost:1234', {app: {name: 'edge'})\"
    "

Und schon hast Du etwas zu probieren. Wie schon geschrieben kannst als zweite Zeile aber auch einen direkten Befehl notieren, der das gleiche tut.

Fund:

Reactjs - How to open the browser that you want as default with "npm start" on Windows 10