在Node.js 8中打印libuv线程池大小

3
这个链接 明确指出 libuv 提供了一个线程池来运行用户代码并在循环线程中得到通知。它的默认大小为4,但可以通过将环境变量UV_THREADPOOL_SIZE设置为任何值来在启动时更改(绝对最大值为128)。

因此,在 package.json 中,我按以下方式设置了 scripts 字段(注意:我使用的是 Windows 7,Node JS 8.11.3, nodemon,express 4.16),

package.json 代码片段如下所示:

.
.
.
"scripts": {
    "start": "SET UV_THREADPOOL_SIZE = 120 && node index.js",
  },
.
.
.

index.js的代码

var express = require('express');
var app = express();

var server = app.listen(3000, function(){
    console.log('LIBUV Threads: ', process.env.UV_THREADPOOL_SIZE); // this returns 'undefined'
});

我该如何确保线程池大小已设置?我想在index.js中将其打印出来。
1个回答

9

你在set命令中不应该有空格。

set UV_THREADPOOL_SIZE=120 && node index.js

此外,您应该通过调用 start 脚本来启动您的Node.js程序:

npm start

否则,环境变量将不会被设置,在代码中继续访问时会得到“undefined”的结果。
如果您使用Nodemon,您可以通过附加一个额外的参数来确保npm脚本被调用:
nodemon --exec npm start

谢谢您的更正,但我仍然得到“未定义”的错误提示。 - Ankur Soni
你是用 npm start 启动服务器的吗? - Tsvetan Ganev
你尝试过仅运行 npm start 吗?如果没有参数运行 nodemon,它会寻找 index.js(如果我没记错的话)。 - Tsvetan Ganev
1
是的!你完全正确。它奏效了!你能否用正确的指导更新你的回答,这样我就可以接受它?同时,我会在我的问题中添加更多细节。 - Ankur Soni
但是我们如何实际查看配置是否被选中,我正在Windows上工作,因此一些Linux命令并不能达到我的目的。 - Nutan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接