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

Javascript Node.js脚本挂起,但在REPL中工作正常,javascript,node.js,lightstreamer,Javascript,Node.js,Lightstreamer,我正在Ubuntu 18.04 LTS上运行node.js。使用require时,我似乎得到了不同的行为,这取决于我是在REPL中还是在脚本中使用它。具体来说,我使用了npm下载。现在,我打开一个终端并执行以下操作: colin@colin-XPS-15-9550:~$ node > var x = require('lightstreamer-client-node') 这很好用 现在我想在脚本中使用这个包。我创建了一个文本文件node_test.js,其中只包含以下行: var x

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

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.js
JavaScript
的新手,所以这可能是预期的行为。我读了一些关于
require
函数的书,似乎找不到解释。请注意,如果我将
lightstreamer客户端节点
替换为其他节点模块,例如
安全缓冲区
,那么无论我使用REPL还是脚本,一切都可以正常工作。

由于库lightstreamer客户端为其内部活动安装了一个带有函数setInterval的计时器,因此该过程似乎挂起,当存在活动任务时,nodejs不允许正常关闭。因此,终止脚本的唯一方法是使用函数process.exit。

该进程似乎挂起,因为library lightstreamer客户端为其内部活动安装了一个带有函数setInterval的计时器,并且当存在活动任务时,nodejs不允许正常关闭。因此,终止脚本的唯一方法是使用函数process.exit。

如果将第二行。。。像require语句之后的
console.log('hello world')
?您是否尝试在文件中添加更多代码?我能够
require
it,require是文件中唯一的东西,它确实像你说的那样挂起了。然而,我把一堆随机打印的语句放进了。他们印刷得很好,但后来挂了起来。然后我添加了
process.exit(0)到脚本末尾,它正常退出。也许这个特定的软件包会被挂起。@JaromandaX感谢您的回复。我刚刚把
console.log('message1')
放在
require
之前,把
console.log('message2')
放在
require
之后。两条语句都打印出来了,然后是闪烁的光标。所以,阻止节点进程结束的不是需求,而是库中的某种东西——可能是出于一个很好的原因——谁知道呢,但是您可以安全地编写使用它的代码library@tycrek我只是在我的机器上复制了它。谢谢你的回复。也许这是应该发生的。LightStreamer用于与服务器建立双向连接,所以我想这有点道理吧?我是编程领域的新手,所以我的问题可能有点幼稚。如果你把第二行。。。像require语句之后的
console.log('hello world')
?您是否尝试在文件中添加更多代码?我能够
require
it,require是文件中唯一的东西,它确实像你说的那样挂起了。然而,我把一堆随机打印的语句放进了。他们印刷得很好,但后来挂了起来。然后我添加了
process.exit(0)到脚本末尾,它正常退出。也许这个特定的软件包会被挂起。@JaromandaX感谢您的回复。我刚刚把
console.log('message1')
放在
require
之前,把
console.log('message2')
放在
require
之后。两条语句都打印出来了,然后是闪烁的光标。所以,阻止节点进程结束的不是需求,而是库中的某种东西——可能是出于一个很好的原因——谁知道呢,但是您可以安全地编写使用它的代码library@tycrek我只是在我的机器上复制了它。谢谢你的回复。也许这是应该发生的。LightStreamer用于与服务器建立双向连接,所以我想这有点道理吧?我对这个编程领域是全新的,所以我的问题可能有点幼稚。