So verwenden Sie nodejs, um den Standardbrowser zu öffnen und zu einer bestimmten URL zu navigieren


135

Ich schreibe eine Anwendung mit Node.js.

Eine der Funktionen, die ich erstellen möchte, besteht darin, den Standard-Webbrowser zu öffnen und zu einer bestimmten URL zu navigieren.

Ich möchte, dass es portabel ist, damit es unter Windows / Mac / Linux läuft.


3
Ich denke, diese Frage ist das, wonach Sie suchen: stackoverflow.com/questions/7664605/…
TomTasche

Ja, es funktioniert in Mac. funktioniert es unter Windows und Linux? Ich hatte keine Fenstermaschine in der Hand
Qing Xu

1
xdg-open funktioniert unter Linux :)
Qing Xu

Antworten:


167

Verwenden Sie opn, da es das plattformübergreifende Problem behandelt. Installieren:

$ npm install opn

Benutzen:

var opn = require('opn');

// opens the url in the default browser 
opn('http://sindresorhus.com');

// specify the app to open in 
opn('http://sindresorhus.com', {app: 'firefox'});

ForbesLindesay, der Rückruf wird sofort aufgerufen, anstatt wenn das Fenster geschlossen wird. Irgendwelche Ideen?
Sam Selikoff

2
Ich bin mir nicht sicher, ob es sich lohnt, github.com/domenic/opener als alternatives Modul mit derselben API auszuprobieren. Es sieht so aus, als hätte es einen richtigen Issue-Tracker, mit dem Sie ein Issue öffnen könnten. Es ist möglicherweise nur eine Seltsamkeit, wie Browser den Prozess als beendet melden, sodass er möglicherweise nicht einfach behoben werden kann.
ForbesLindesay

1
Dies ist eine großartige Empfehlung, die für den vom OP beschriebenen Anwendungsfall sehr gut funktioniert.
Jbranchaud

2
Es sieht so aus, als ob Opener unter Mac / Windows / Linux funktioniert, während Open nur unter Mac / Windows funktioniert. Daher ist Opener vorzuziehen.
Tom

2
Bitte aktualisieren Sie, um vorzuschlagen, opnanstatt dass openletzteres jetzt veraltet ist.
Samir Aguiar

43
var url = 'http://localhost';
var start = (process.platform == 'darwin'? 'open': process.platform == 'win32'? 'start': 'xdg-open');
require('child_process').exec(start + ' ' + url);

1
Sollte beachtet werden, &sollte zumindest unter ^&
Windows

1
Ich verpackte eine ähnliche Logik, versprach sie und veröffentlichte sie
azhar22k

6

Node-Open ist veraltet . Verwenden Sie jetzt opn :

const opn = require('opn')

opn('http://sindresorhus.com') // Opens the url in the default browser

//opn('http://sindresorhus.com', {app: 'firefox'}) // Specify the app to open in

3

Möglicherweise müssen Sie einen Schalter mit dem Wert ...

require('os').type()

Und dann nutzen spawn("open")oder spawn("xdg-open")je nach Plattform?


4
In Windows versuche ich Spawn ("explorer.exe", [' stackoverflow.com'] ). Der Windows Explorer wählt den Standardbrowser aus, um die URL zu öffnen.
Qing Xu

@PaulIrish: Leider ist dein Link jetzt tot.
mklement0

2
@ QingXu super! require('child_process').spawn('explorer', ['url'])ist ein schöner Oneliner!
TWiStErRob

2

IMHO verwendet am einfachsten und saubersten ein npm-Paket namens openurl . Mach a npm install openurl. Sie können dies ganz schnell in Ihrem Nodejs REPL versuchen

require("openurl").open("http://stackoverflow.com/questions/8500326/how-to-use-nodejs-to-open-default-browser-and-navigate-to-a-specific-url")

Sie können auch E-Mails damit senden, wenn dies erforderlich ist. require("openurl").open("mailto:janedoe@example.com")

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.