Node.js 脚本在要求时挂起,但在 REPL 中工作正常

Node.js script hangs on require, but works fine in the REPL

我 运行正在 node.js Ubuntu 18.04 LTS。使用 require 时,我似乎得到了不同的行为,具体取决于我是在 REPL 中还是在脚本中使用它。具体来说,我用npm下载了lightstreamer-client-node。现在,我打开一个终端并执行以下操作:

colin@colin-XPS-15-9550:~$ node
> var x = require('lightstreamer-client-node')

这非常有效。

现在我想在脚本中使用这个包。我创建了一个文本文件 node_test.js 只包含以下行:

var x = require('lightstreamer-client-node')

然后我打开一个终端并运行命令:

colin@colin-XPS-15-9550:~$ node /home/colin/node_test.js

这会无限期地挂在闪烁的光标上。

我是 node.jsJavaScript 的新手,所以这可能是预期的行为。我已经阅读了一些有关 require 函数的资料,但似乎找不到相关的解释。请注意,如果我将 lightstreamer-client-node 替换为其他节点模块,例如safe-buffer,然后一切正常,无论我使用 REPL 还是脚本。

该进程似乎挂起,因为库 lightstreamer-client 安装了一个计时器,具有 setInterval 函数,用于其内部活动,而 nodejs 不允许在有活动任务时正常关闭。所以终止脚本的唯一方法是使用函数 process.exit.