node.js - 为什么这个 node.js 脚本不会在终端中保持打开状态?

标签 node.js ubuntu

我想知道如何在不在终端中输入 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

最佳答案

这几乎肯定与控制终端有关。我猜你正在使用的文件管理器不会给你一个附加到任何东西的 stdin 并且它会在没有任何输入的情况下退出。

最好的办法是将其包装在一个程序中,该程序将为其提供有效的 stdin。例如,在 Mac 上,我在 Terminal.app 中运行 Node 脚本,因此它始终获得有效的标准输入。应该能够在 XWindows 中做类似的事情。如果您没有使用窗口管理器,您也可以尝试使用“expect”和“screen”。这些组合应该可以满足您的需求。

关于node.js - 为什么这个 node.js 脚本不会在终端中保持打开状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452342/

相关文章:

mysql - 怎么解决? ER_BAD_FIELD_ERROR : Unknown column 'undefined' in 'field list'

php - Imagick - ImagickException 未授权@error/constitute.c/ReadImage/412 错误

node.js - 无法从 lambda Nodejs 连接到 EC2 Postgres 数据库

javascript - 无法使用 Node js 设置 cookie

node.js - 使用 shell 脚本从单个 shell 命令运行两个 Node 服务器

javascript - 在 Ubuntu 64 位上安装 js-yaml NPM 包依赖项时出现问题

ubuntu - 无法在 EC2 Ubuntu 上安装 docker

ubuntu - Ubuntu上有没有像Kloxo这样的控制面板?如何安装它?

ubuntu - ubuntu 上的 node-xmpp-bosh 错误

javascript - NodeJS 让 Promise 等待 foreach 循环完成