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 回答