nodejsを使用してデフォルトのブラウザーを開き、特定のURLに移動する方法


135

Node.jsを使用してアプリケーションを作成しています。

作成したい機能の1つは、デフォルトのWebブラウザーを開いて特定の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'});

ForbesLindesayコールバックは、ウィンドウが閉じられたときではなく、すぐに呼び出されます。何か案は?
Sam Selikoff 2014年

2
確かではありませんが、github.com / domenic / openerを同じAPIの代替モジュールとして試してみる価値はあります。それはあなたが問題を開くことができる適切な問題トラッカーを持っているようです。ただし、ブラウザがプロセスを終了として報告する方法が変わっている可能性があるため、簡単に修正できない場合があります。
ForbesLindesay 2014年

1
これは優れた推奨事項であり、OPで説明されている使用例に非常に適しています。
jbranchaud 2014年

2
オープナーはMac / Windows / Linuxで機能するように見えますが、オープナーはMac / Windowsでのみ機能するため、オープナーが望ましいです。
トム・

2
後者は現在非推奨になっているため、更新するopn代わりに提案してくださいopen
Samir Aguiar 2017年

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

1
少なくともWindowsでは&、URL内のはエスケープする必要があります^&
junvar

1
私は同様のロジックをラップして約束し、npm npmjs.com/package/out-url
azhar22k

6

node-openは非推奨です。次に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

...の値を使用してスイッチを実装する必要がある場合があります。

require('os').type()

そして、使用spawn("open")またはspawn("xdg-open")プラットフォームに依存?


4
Windowsでは、spawn( "explorer.exe"、[' stackoverflow.com'])を試しますが、Windowsエクスプローラはデフォルトのブラウザを選択してURLを開きます。
Qing Xu

@PaulIrish:悲しいことに、あなたのリンクは今死んでいます。
mklement0 2015

2
@QingXuすごい!require('child_process').spawn('explorer', ['url'])素敵なワンライナーです!
TWiStErRob 2016

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.