【问题标题】:Node.js javascript command line while server running?服务器运行时的Node.js javascript命令行?
【发布时间】:2021-01-26 08:01:27
【问题描述】:

如果我有一个使用 express 运行的 node.js Web 服务器,有没有办法获取命令行?有点像浏览器有一个 javascript 控制台的方式。我想输入变量并在 node.js 运行时检查它们。

如果我输入“节点”,那么它会给我一个命令行。但如果我输入“node server.js”,则该命令行不可用。无论服务器的状态如何,如何使命令行始终可用(在屏幕底部)?

【问题讨论】:

  • 你真的有两个选择。 1:打开另一个终端。 2:使用像 pm2(一个 npm 包)这样的东西,它在后台运行脚本并释放你的命令行。我在所有节点服务器上使用 pm2。 npmjs.com/package/pm2
  • @JakeAve 问题是关于在运行时打开控制台以检查变量,而不是关于打开另一个终端(或在 express 应用程序运行时无法使用终端)
  • 这更有意义!除了可以让您在运行时查看变量的 vs 代码调试器(除非您想在整个服务器上添加控制台日志)之外,我从未听说过其他任何东西,但我会关注这个问题,看看是否还有其他东西。

标签: javascript node.js


【解决方案1】:

要执行此操作,请键入 node --inspect server.js

然后在 Chrome 的 url 栏中输入chrome://inspect/ 来连接它。然后单击远程目标下该实例上的“检查”。然后我发现我可以看到 global 命名空间下的变量/对象。

另外,一种在服务器窗口本身上添加键盘交互而无需连接到它的非常基本的方法:

var readline = require('readline');
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);

setInterval(function() {
    console.log('server stuff');
}, 1000);

process.stdin.on('keypress', (str, key) => {

    if(key.sequence === '\u0003') {
        console.log('ctrl-c pressed');
        process.exit();
    }

    console.log('you pressed: ' + key.name);
});

【讨论】:

  • 如果使用 nodemon,请确保使用 -I 启动它,否则 setRawMode 将不起作用。
猜你喜欢
  • 1970-01-01
  • 2017-04-09
  • 2015-03-18
  • 2012-05-24
  • 2016-11-28
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多