schedule2021-08-25

Node.jsでChrome.exeを起動してページを開く方法

Node.jsからChrome.exeを起動して任意のページを開く方法がわかったので紹介します。

動作確認環境

  • Windows 10 Home
  • Node.js: v14.17.5

MacもChromeのexeのパスを指定して起動できるはずです。

Chrome.exeを起動して任意のページを開くコード

Windowsで実行できるサンプルコードです。 Chromeのexeのパスは自身の環境に合わせてください。

open_chrome.js
// Chromeのパス
const chromePath = '"C:/Program Files/Google/Chrome/Application/chrome.exe"';
// 開くページのURL
const argument = "https://www.suzu6.net";

const spawn = require("child_process").spawn;
// Windowsの場合はコマンドプロンプトで実行する
const chrome = spawn(chromePath, [argument], { shell: true });

// 実行時の出力
chrome.stdout.on("data", data => {
  console.log(`stdout: ${data}`);
});

// 実行時のエラー出力
chrome.stderr.on("data", data => {
  console.error(`stderr: ${data}`);
});

// プロセスが終了する時の処理
chrome.on("close", code => {
  console.log(`child process exited with code ${code}`);
});

スクリプトを実行するとChromeが開きこのサイトが表示されます。

# Windows
> node .\open_chrome.js
child process exited with code 0

process.platformでOSを判定してパスを切り替える処理を加えると良い感じになる。

const is_windows = process.platform==='win32'
const is_mac = process.platform==='darwin'
const is_linux = process.platform==='linux'

Windowsでの注意点

Windowsではパスの記述に癖があります。

  • 区切り文字は/で良いです。
    • バッククォートの場合は\ではなく\\にする。
  • フォルダ名のスペースに気を付ける。
    • × 'C:/Program Files/Google/Chrome/Application/chrome.exe' : C:/Programとそれ以降で分かれる
    • × 'C:/"Program Files"/Google/Chrome/Application/chrome.exe' : スペースがうまく処理できずに不要なタブが開いてしまう picture 1
    • '"C:/Program Files/Google/Chrome/Application/chrome.exe"'

以上