2016-10-16 3 views
-3

私はNode.jsに関する一連のチュートリアルに従っています。 EXECを使用して子プロセスを実証するために、私はノードのためのコマンドラインに行くとき、私はNode.jsのexecメソッドの使用

node exec.js 

に入力するexec.jsのファイルの下に以下のコードを与えられた後、何も起こりません。これはなぜでしょうか?

var exec = require( "child_process")。exec;

exec( "open http://www.linkedin.com");

+0

結構ですし、私の作品:Windowsの場合 –

+0

どのプラットフォームを実行していますか?たとえば、Windowsには「開く」コマンドはありません。コマンド・シェルから 'http:// www.linkedin.com'を開きますか? – jfriend00

+0

こんにちは、申し訳ありませんが、それは私が応答するまでにはとても時間がかかりました。私はWindowsを使用しているので、あなたは正しいです。代わりに、startコマンドを使用しなければなりませんでした。 – user2892930

答えて

0

あなたのコードは私の仕事です。これを診断して解決する

、私がしようとするだろう:

  1. あなたの端末では(ノードを使用していない)、open http://www.linkedin.comがすべてで動作することを確認します。適切なURLに開いているデフォルトのWebブラウザが表示されます。それが起こらない場合、ノードは魔法のようにそれを修正することはできません。おそらく、set the default browserにする必要があります。
  2. URLを一重引用符で囲むのが適切です。これにより、URLに特定の予約文字が含まれる場合があります。

    exec("open 'http://www.linkedin.com'"); 
    
  3. コマンドの出力を見ると、それが正常に完了を確認することができるようにコールバックを追加します。

    exec("open 'http://www.linkedin.com'", function (err, stdout, stderr) { 
        console.log('err:', err); 
        console.log('stdout:', stdout); 
        console.log('stderr:', stderr); 
    }); 
    

理想的な解決策はopn、既にこの正確な目的のために存在する高品質のモジュールを使用することです。 jfriend00彼のコード@

exec("start http://www.linkedin.com"); 
+0

ありがとう、これは実際に非常にうまくいった – user2892930

+0

あなたは大歓迎です。また、これをさらに改善するnpmモジュールへのリンクを追加しました(クロスプラットフォームで動作します)。私の答えがあなたを助けたら、答えとしてそれを受け入れてください。 –

0

は、以下のようにする(Mac用)の代わりに openstartコマンドを使用します。 [exec()](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback)は、コマンドとargsを1つの大きなホニング文字列として受け取ります。あなたは[execFile()](https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback)や[spawn()](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options)を考えているかもしれません。 ?そして `open`は確かにURLを受け入れます。 `man open`から:"ファイルがURLの形式であれば、そのファイルはURLとして開かれます。 "
+0

ありがとうございました。この線はうまく動作します – user2892930

関連する問題