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'
: スペースがうまく処理できずに不要なタブが開いてしまう - 〇
'"C:/Program Files/Google/Chrome/Application/chrome.exe"'
- ×
以上
【Electron】PCのスリープと起動イベントを検知する
ElectronNodejsJavaScriptTypeScriptschedule2021-09-06