3

node script_name.jsターミナルに入らずにこのスクリプトを実行する方法を知りたいです。ターミナルからスクリプトを起動するとプロンプトが表示されますが、スクリプトをプログラムとして (コマンド ラインではなくファイル マネージャーから) 実行しようとすると、プロンプトを表示せずにターミナルを開いたり閉じたりするだけです。

#!/usr/local/bin/node

var prompt = require('prompt');

//var stuff = require("./stuff");

  prompt.start();

  prompt.get(['username', 'email'], function (err, result) {
    if (err) { return onErr(err); }
    console.log('Command-line input received:');
    console.log('  Username: ' + result.username);
    console.log('  Email: ' + result.email);
  });

  function onErr(err) {
    console.log(err);
    return 1;
  }

このプログラムの期待される出力 (入力付き) は次のとおりです。

anderson@anderson-Ideapad-Z560:~/AeroFS/node.js examples$ node node_prompt_demo.js
prompt: username:  blah
prompt: email:  blah@example.com
Command-line input received:
  Username: blah
  Email: blah@example.com
4

1 に答える 1

0

これはほぼ確実に制御 tty に関係しています。あなたが使用しているファイルマネージャーは、stdin何にも添付されていない を提供せず、入力なしで終了するだけだと思います。

あなたの最善の策は、有効な を与えるプログラムでこれをラップすることですstdin。たとえば、Mac では、Terminal.app内でノード スクリプトを実行して、常に有効な標準入力を取得します。XWindows でも同様のことができるはずです。ウィンドウ マネージャを使用していない場合は、" expect" と ' screen' を使用してみてください。これらの組み合わせにより、必要なものが得られるはずです。

于 2012-09-25T13:11:19.273 に答える