Node.js中cluster.isPrimary返回undefined而isMaster正常返回true的原因是什么?
问题出现的核心原因
你遇到的这个情况本质是Node.js版本不匹配导致的,具体说明如下:
cluster.isPrimary是 Node.js v16.0.0 版本才正式新增的属性,同时官方从该版本开始将原有的cluster.isMaster标记为废弃状态。此外该属性也被向后移植到了v14.x的维护分支,v14.18.0及更高的v14版本也支持该属性。- 如果你当前使用的Node.js版本低于v14.18.0,或是v15.x全版本、v13及更早的版本,运行环境中根本不存在
isPrimary属性,调用时自然会返回undefined;而isMaster是更早版本就存在的属性,所以可以正常返回布尔值。
解决方案
- 首先执行
node -v命令查看当前Node.js版本 - 如果不需要兼容低版本环境,直接将Node.js升级到v14.18.0+、v16.0.0+或是更高的LTS版本,即可正常使用
isPrimary属性 - 如果需要兼容新旧版本的Node.js,可以写兼容判断逻辑兜底:
const cluster = require('cluster') const isPrimary = cluster.isPrimary ?? cluster.isMaster
内容的提问来源于stack exchange,提问作者bahejam379
相关产品推荐
相关产品推荐

