nodejs를 사용하여 기본 브라우저를 열고 특정 URL로 이동하는 방법


135

Node.js를 사용하여 응용 프로그램을 작성 중입니다.

내가 만들고 싶은 기능 중 하나는 기본 웹 브라우저를 열고 특정 URL로 이동하는 것입니다.

Windows / Mac / Linux에서 실행되도록 이식 가능하게 만들고 싶습니다.


3
:이 질문은 당신이 찾고있는 것 같다 stackoverflow.com/questions/7664605/...
TomTasche

네, Mac에서 작동합니다. Windows와 Linux에서 작동합니까? 나는 창 기계를 가지고 있지 않았다
Qing Xu

1
xdg-open은 Linux에서 작동합니다 :)
Qing Xu

답변:


167

플랫폼 간 문제를 처리하므로 opn을 사용하십시오 . 설치하기 위해서:

$ npm install opn

쓰다:

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'});

창을 닫을 때가 아니라 콜백을 즉시 호출합니다. 어떤 아이디어?
Sam Selikoff

2
확실하지는 않지만 github.com/domenic/opener 에 동일한 API를 사용하는 대체 모듈로 사용해 볼 가치가 있습니다 . 문제를 열 ​​수있는 적절한 문제 추적기가있는 것 같습니다. 브라우저가 프로세스를 종료로보고하는 방식이 이상 할 수 있으므로 쉽게 고칠 수 없습니다.
ForbesLindesay 1

1
이것은 권장 사항이며 OP에 설명 된 사용 사례에 매우 적합합니다.
jbranchaud

2
오프너는 Mac / Windows / Linux에서 작동하는 것처럼 보이지만 open은 Mac / Windows에서만 작동하므로 오프너가 바람직합니다.
Tom

2
후자는 더 이상 사용되지 않으므로 opn대신 제안하여 업데이트하십시오 open.
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
적어도 창에서 &URL ^&
의은 (

1
나는 비슷한 논리를 싸서 그것을 약속하고 npm npmjs.com/package/out-url에
azhar22k


3

값을 사용하여 스위치를 구현해야 할 수도 있습니다 ...

require('os').type()

그리고 사용 spawn("open")또는 spawn("xdg-open")플랫폼에 따라?


4
Windows에서 spawn ( "explorer.exe", [ ' stackoverflow.com'] )을 시도 하면 Windows 탐색기가 기본 브라우저를 선택하여 URL을 엽니 다.
Qing Xu

@PaulIrish : 슬프게도, 귀하의 링크는 지금 죽었습니다.
mklement0

2
@QingXu 굉장합니다! require('child_process').spawn('explorer', ['url'])좋은 oneliner입니다!
TWiStErRob

2

가장 쉽고 가장 쉬운 방법은 IMHO가 openurl 이라는 npm 패키지를 사용하는 입니다. 을 수행하십시오 npm install openurl. Nodejs REPL 에서이 작업을 빠르게 시도 할 수 있습니다

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

필요에 따라 이메일을 보낼 수도 있습니다. require("openurl").open("mailto:janedoe@example.com")

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.