【发布时间】:2020-04-09 03:59:20
【问题描述】:
我在 Ubuntu 18.04 LTS 上运行 node.js。我似乎在使用 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.js 和 JavaScript 的新手,所以这可能是预期的行为。我已经阅读了一些关于 require 函数的内容,但似乎找不到它的解释。请注意,如果我将 lightstreamer-client-node 替换为其他一些节点模块,例如safe-buffer,然后一切正常,无论我使用 REPL 还是脚本。
【问题讨论】:
-
如果在 require 语句之后添加第二行 ... 像
console.log('hello world')会发生什么? -
您是否尝试在文件中添加更多代码?我能够
require它,并且 require 是文件中唯一的东西,它确实像你说的那样挂起。但是,我放了一堆随机的打印语句。它们打印得很好,但后来挂了。然后我在脚本末尾添加了process.exit(0);,它正常退出了。也许该特定软件包会出现挂起。 -
@JaromandaX 感谢您的回复。我只是将
console.log('message 1')放在require之前和console.log('message 2')放在require之后。两个语句都打印出来,然后是闪烁的光标。 -
所以,阻止节点进程结束的不是 require - 它是那个库中的东西 - 可能有充分的理由 - 谁知道,但你可以安全地编写使用它的代码图书馆
-
@tycrek 我刚刚在我的机器上复制了它。感谢您的回复。也许它应该发生。 LightStreamer 用于与服务器建立双向连接,所以我想这有点道理?我是这个编程领域的新手,所以我的问题可能有点幼稚。
标签: javascript node.js lightstreamer