运行Node.js程序时保持对控制台的访问

时间:2014-04-24 03:30:48

标签: node.js

我可以向运行.js脚本的Node.js进程发送命令吗?目前我只是运行node并将我的代码粘贴到控制台中。这不太方便。

1 个答案:

答案 0 :(得分:1)

您可以启动一个repl服务器(可以访问脚本的范围),如下所示:

var repl = require('repl'),
    net = require('net');

var REPL_PORT = 2323;

var replServer = net.createServer(function(sock) {
  repl.start({
    prompt: 'myrepl> ',
    input: sock,
    output: sock,
    eval: function(cmd, context, filename, callback) {
      var ret, err;
      try {
        ret = eval(cmd);
      } catch (e) {
        err = e;
      }
      if (err)
        callback(err);
      else
        callback(null, ret);
    }
  }).on('exit', function() {
    sock.end();
  });
});
replServer.on('error', function(err) {
  console.log('REPL error: ' + err);
});
replServer.on('close', function(had_err) {
  console.log('REPL shut down ' + (had_err ? 'due to error' : 'gracefully'));
});
replServer.on('listening', function() {
  console.log('REPL listening on port ' + REPL_PORT);
});
replServer.listen(REPL_PORT, '127.0.0.1');

然后只需telnet到端口2323的localhost,你就会得到一个repl提示符,你可以在你的脚本中定义变量等内容并输入内容。