Como usar o nodejs para abrir o navegador padrão e navegar para uma URL específica


135

Estou escrevendo um aplicativo usando Node.js.

Uma das funções que desejo criar é abrir o navegador da web padrão e navegar para um URL específico.

Eu quero que ele seja portátil para rodar em Windows / Mac / Linux.


3
Eu acho que essa pergunta é o que você está procurando: stackoverflow.com/questions/7664605/…
TomTasche 14/12/11

Sim, funciona no Mac. funciona no Windows e Linux? eu não tenho uma máquina de janela na mão
Qing Xu

1
xdg-open está trabalhando no Linux :)
Qing Xu

Respostas:


167

Use opn porque ele resolverá o problema de plataforma cruzada. Para instalar:

$ npm install opn

Usar:

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 dizer que o retorno de chamada está sendo chamado imediatamente, em vez de quando a janela é fechada. Alguma ideia?
Sam Selikoff

2
Não tenho certeza, pode valer a pena tentar o github.com/domenic/opener como um módulo alternativo com a mesma API. Parece que ele possui um rastreador de problemas adequado no qual você pode abrir um problema. Pode ser apenas uma esquisitice de como os navegadores relatam o processo como finalizado, portanto, pode não ser facilmente corrigível.
precisa saber é o seguinte

1
Essa é uma ótima recomendação, funciona muito bem para o caso de uso descrito pelo OP.
jbranchaud

2
Parece que o opener funciona no Mac / Windows / Linux, enquanto o open funciona apenas no Mac / Windows, portanto é preferível o opener.
Tom

2
Atualize para sugerir, em opnvez de openo último ser descontinuado agora.
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
Deve-se notar que, pelo menos nas janelas, &o URL deve ser escapado com^&
junvar 21/08/19

1
Eu envolvi uma lógica semelhante, prometi-a e publiquei em npm npmjs.com/package/out-url
azhar22k

6

O nó aberto está obsoleto . Agora use 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

Pode ser necessário implementar um switch usando o valor de ...

require('os').type()

E então usar spawn("open")ou spawn("xdg-open")dependendo da plataforma?


4
No Windows, eu tento aparecer ("explorer.exe", [' stackoverflow.com'] ), o Windows Explorer selecionará o navegador padrão para abrir a URL.
Qing Xu

@PaulIrish: Infelizmente, seu link está morto agora.
mklement0

2
@QingXu awesome! require('child_process').spawn('explorer', ['url'])é um bom oneliner!
TWIStErRob

2

A maneira mais fácil e organizada, o IMHO está usando um pacote npm chamado openurl . Faça um npm install openurl. Você pode tentar isso rapidamente no seu Nodejs REPL

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

Você também pode enviar e-mails com ele, se necessário; require("openurl").open("mailto:janedoe@example.com")

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.