2

を使用して、Windows 7 で node.js を使用して Google Chrome を開こうとしていますspawn。の設定を除くすべての引数で機能するようuser-data-dirです。ただし、--user-data-dirコマンドラインから直接機能し、ノードから .cmd ファイルを呼び出して引数を渡す場合にも機能します。

Chrome はバックグラウンドで開きます (タスク マネージャーに表示されます) が、ブラウザー ウィンドウは開かず、タスク マネージャーでプロセスを手動で強制終了して終了する必要があります。

エラーや問題の兆候はありません。

ここに私のノードコードがあります:

var spawn  = require('child_process').spawn;
var exe = 'C:\\Program Files\\Google\\Chrome\\application\\chrome.exe';


//this does not work and gives no errors just starts chrome in the background but fails to open browser window
// var args = [
//      '--user-data-dir=C:\\Windows\\Temp\\testingdir',
//      'http://www.google.com'
//  ];

//actual output from running this through a .cmd file and echoing out the arguments
// --user-data-dir=C:\Windows\Temp\testingdir http://www.google.com
//running the above arguments through a .cmd file from nodejs or manually running them in the cli works



//this works from nodejs, other arguments work too, just not the --user-data-dir argument
// var args = ['http://www.google.com'];

chrome = spawn(exe, args);


chrome.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

chrome.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

chrome.on('exit', function (code) {
  console.log('child process exited with code ' + code);
  // chrome.kill();
});

コメントアウトされたコードでわかるように、user-data-dir を変更しようとしない限り機能します。さまざまな一時ディレクトリを試し、アクセス許可の問題が発生した場合に備えて、一時ディレクトリの「全員」にフルアクセスを設定しました。

更新: v0.8.1 から最新の v0.8.14 に更新したところ、失敗するとon('exit', function())実際にコードが返されます。

child process exited with code 20

このコードの意味を調べるにはどうすればよいですか?

更新 2終了コード 20 は、もう再現できないため、1 回限りのまぐれだったと思います。同じ結果が得られるように、毎回タスク マネージャーでクロム プロセスを強制終了することを覚えておく必要があるため、さまざまなことをテストしようとするとバグが発生します。したがって、以前と同じ結果に戻ります。エラーはありませんが、Chrome ウィンドウはなく、実行中のいくつかの Chrome プロセスは手動で強制終了する必要があります。

更新 3 このスクリプトを Ubuntu に移動し、異なるファイル構造を反映するように exe と引数を変更しました。これは Ubuntu で動作します。

exe = "/opt/google/chrome/google-chrome"

args = [
    "http://www.google.com",
    "--user-data-dir=/home/lotus/testdir"
    ];

したがって、これは特に Windows 上の Chrome に関連していることを確認できます。

4

1 に答える 1

1

http://www.hiteksoftware.com/mize/Knowledge/articles/049.htm

20 The system cannot find the device specified.

あまり意味はありませんが

于 2012-11-04T14:50:21.387 に答える