2

私は Node.js CLI スクリプトに取り組んでおり、その職務の一環として、ユーザーから入力テキストの大きなブロックを取得する必要がある場合があります。現在、私は非常に基本的なreadline.prompt(). 編集機能をもっと充実させてほしい。車輪を再発明するのではなく、スクリプトが一時ファイルにデータを書き込み、終了時にそのファイルから読み取るテキスト エディターを起動するようにすることができると思いcrontab -eます。visudochild_process ライブラリからいくつか試してみましたが、それらはすべてバックグラウンドでアプリケーションを起動し、stdin またはカーソルの制御を与えません。私の場合、実行中にコンソール全体を占有するには、vim や nano などのアプリケーションが必要です。これを行う方法はありますか、それとも運が悪いのでしょうか?

注: これは、1 台のマシンで実行される内部プロジェクト用であり、そのソースはおそらく日の目を見ることはありません。私が必要とすることを行うための既存のパッケージがないと仮定すると、ハック的な回避策は大歓迎です。

4

1 に答える 1

4

child_process.spawn の stdio オプションを継承するように設定しましたか?

このように、子プロセスは最上位ノード プロセスと同じ stdin と stdout を使用します。

このコードは私のために機能します(ノードv4.3.2):

'use strict';

var fs = require('fs');
var child_process = require('child_process');
var file = '/tmp/node-editor-test';

fs.writeFile(file, "Node Editor", function () {
  var child = child_process.spawn('vim', [file], {stdio: 'inherit'});

  child.on('close', function () {
    fs.readFile(file, 'utf8', function (err, text) {
      console.log('File content is now', text);
    });
  });
});
于 2013-01-13T00:55:42.443 に答える