如何使用 nodejs 打开默认浏览器并导航到特定 URL

IT技术 javascript node.js
2021-01-25 18:48:07

我正在使用 Node.js 编写应用程序。

我想要创建的功能之一是打开默认的 Web 浏览器并导航到特定的 URL。

我希望它是可移植的,以便它可以在 Windows/Mac/Linux 上运行。

6个回答

使用open(以前称为opn),因为它将处理跨平台问题。安装:

$ npm install open

使用:

const open = require('open');

// opens the url in the default browser 
open('http://sindresorhus.com');
 
// specify the app to open in 
open('http://sindresorhus.com', {app: 'firefox'});
不确定,可能值得尝试github.com/domenic/opener作为具有相同 API 的替代module。看起来它有一个适当的问题跟踪器,您可以在其上打开问题。尽管如此,浏览器如何报告进程结束可能只是一个奇怪的问题,因此它可能不容易修复。
2021-03-24 18:48:07
这是一个很好的建议,非常适合 OP 描述的用例。
2021-03-26 18:48:07
看起来 opener 可以在 Mac / Windows / Linux 上运行,而 open 只能在 Mac / Windows 上运行,所以 opener 更可取。
2021-03-28 18:48:07
这对我有用,但看起来子进程没有分离,所以当服务器出现故障时,我的 Firefox 也会出现故障!不确定如何“打开”以分离子进程......知道吗?
2021-04-07 18:48:07
ForbesLindesay 将立即调用回调,而不是在窗口关闭时调用。有任何想法吗?
2021-04-11 18:48:07
var url = 'http://localhost';
var start = (process.platform == 'darwin'? 'open': process.platform == 'win32'? 'start': 'xdg-open');
require('child_process').exec(start + ' ' + url);
我包装了类似的逻辑,promisified 并发布到 npm npmjs.com/package/out-url
2021-03-21 18:48:07
应该注意,至少在 Windows 上,&URL 中的 's 应该用^&
2021-03-22 18:48:07

不推荐使用node-open 现在使用open

const open = require('open')

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

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

您可能需要使用 ...

require('os').type()

然后使用spawn("open")spawn("xdg-open")取决于平台?

@QingXu 太棒了!require('child_process').spawn('explorer', ['url'])是一个不错的oneliner!
2021-03-15 18:48:07
在 Windows 中,我尝试 spawn("explorer.exe",[' stackoverflow.com'] ),Windows 资源管理器将选择默认浏览器来打开 URL。
2021-03-29 18:48:07

安装:

$ npm install open

用法:

const open = require('open');
 
(async () => {
    // Opens the image in the default image viewer and waits for the opened app to quit.
    await open('unicorn.png', {wait: true});
    console.log('The image viewer app quit');
 
    // Opens the URL in the default browser.
    await open('https://sindresorhus.com');
 
    // Opens the URL in a specified browser.
    await open('https://sindresorhus.com', {app: 'firefox'});
 
    // Specify app arguments.
    await open('https://sindresorhus.com', {app: ['google chrome', '--incognito']});
})();
您好,感谢您分享此答案。最好添加一个指向 async/await 文档的链接,仅供参考。不过代码中的注释很好:)
2021-04-05 18:48:07