[解決済み] Node Webkitで外部exeを実行するには?
質問
私は自分のウェブアプリにNode Webkitを使っていますが、Node Webkitで作業するのは本当に初心者です。私は自分のアプリケーションでexeを実行したいのですが、「child_process」を使用して簡単なメモ帳を開くことさえできません。私はウェブサイトでいくつかの例を見てきましたが、それでも私はnotepad.exeを実行することが困難であることを発見した。
var execFile = require
('child_process').execFile, child;
child = execFile('C:\Windows\notepad.exe',
function(error,stdout,stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+ error.code);
console.log('Signal received: '+
error.signal);
}
console.log('Child Process stdout: '+ stdout);
console.log('Child Process stderr: '+ stderr);
});
child.on('exit', function (code) {
console.log('Child process exited '+
'with exit code '+ code);
});
また、meadco-neptuneプラグインを使ってexeを実行しようとし、プラグインを追加するためにpackage.jsonファイルにコードを書きましたが、プラグインがロードできないと表示されます。私のpackage.jsonファイルは以下のようなものです。
{
"name": "sample",
"version": "1.0.0",
"description": "",
"main": "index.html",
"window": {
"toolbar": false,
"frame": false,
"resizable": false,
"show": true,
"title": " example"
},
"webkit": {
"plugin": true
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "xyz",
"license": "ISC"
}
解決方法は?
node.jsでは、標準モジュールを使って外部プログラムを起動する方法として、以下の2つがあります。
child_process
:
exec
と
spawn
.
を使用する場合
exec
の場合、外部プログラムの終了時に stdout と stderror の情報を取得します。データはその時だけnode.jsに返されます。Mi Ke Buがコメントで正しく指摘している通りです。
しかし、外部プログラムから対話的にデータを受け取りたい場合(実際には notepad.exe を起動することはないでしょう)、別の方法を使用する必要があります - 。
spawn
.
例を考えてみましょう。
var spawn = require('child_process').spawn,
child = spawn('C:\\windows\\notepad.exe', ["C:/Windows/System32/Drivers/etc/hosts"]);
child.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
child.on('close', function (code) {
console.log('child process exited with code ' + code);
});
また、パス名にはバックスラッシュを2つ使用する必要があります。
C:\\Windows\\notepad.exe
そうでなければ、パスは次のように評価されます。
C:windows
notepad.exe
(改行あり)これはもちろん存在しないものです。
あるいは、例のコマンドライン引数のように、フォワードスラッシュを使用することもできます。
関連
-
[解決済み] MongoClient v3.0使用時、db.collectionが関数でない
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Javascript / Chrome - webkitインスペクタからオブジェクトをコードとしてコピーする方法
-
[解決済み] WebKit の event.layerX と event.layerY に関する問題
-
[解決済み] node.jsで「Error: spawn ENOENT」をデバッグするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] Macでポート3000をロックしているプロセスを見つける(そして殺す)【終了
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。