Node Cluster模块,与Passenger不兼容

Node Cluster module, which is incompatible with Passenger

我正在使用 node.js express passport 和最近的 rate-limiter-flexible ... 我注意到我收到了这条错误消息:

server.js

const { RateLimiterMemory, RateLimiterRes } = require('rate-limiter-flexible');

控制台错误:

[ N 2019-12-19 17:30:36.7775 15266/Ta age/Cor/CoreMain.cpp:1358 ]: Checking whether to disconnect long-running connections for process 20096, application /var/www/host/project (production)
App 16152 output: Trace: You required the Node Cluster module, which is incompatible with Passenger, a non-functional shim was returned and your app may still work. However, please remove the related code as soon as possible.
App 16152 output:     at Module.require (/usr/share/passenger/helper-scripts/node-loader.js:63:12)
App 16152 output:     at require (internal/modules/cjs/helpers.js:16:16)
App 16152 output:     at Object.<anonymous> (/var/www/host/project/node_modules/rate-limiter-flexible/lib/RateLimiterCluster.js:22:17)
App 16152 output:     at Module._compile (internal/modules/cjs/loader.js:774:30)
App 16152 output:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
App 16152 output:     at Module.load (internal/modules/cjs/loader.js:641:32)
App 16152 output:     at Function.Module._load (internal/modules/cjs/loader.js:556:12)
App 16152 output:     at Module.require (internal/modules/cjs/loader.js:681:19)
App 16152 output:     at Module.require (/usr/share/passenger/helper-scripts/node-loader.js:80:25)
App 16152 output:     at require (internal/modules/cjs/helpers.js:16:16)

这是什么,我该如何解决?

我认为,它与 index.js 有关,其中所有 class 都是导入的,包括 RateLimiterCluster。如果你不使用它,你可以尝试通过完整路径

来要求你需要的确切 class
const RateLimiterRedis = require('rate-limiter-flexible/lib/RateLimiterRedis');

我 运行 在尝试将我的 NodeJS 应用程序(使用集群模块)部署到具有 cPanel 和“设置 Node.js 应用程序”选项的共享主机后出现相同的错误消息。

我建议您阅读的 Passenger 文档中解释了不兼容问题:Fundamental Concepts Phusion Passenger

特别是这部分解释了集群模块与 Passenger 不兼容的原因:

Passenger 替换了 Cluster 模块。不需要样板代码:Passenger 可以在多个进程中启动您的应用程序并自动负载平衡流量,大部分时间无需更改代码,除了删除集群模块样板文件(如果您已经添加了它)。 除此之外,Passenger 提供的最大优势是它可以通过使用粘性会话来负载平衡 WebSockets、Socket.IO 和 SockJS。这些技术在 Cluster 模块上效果不佳,因为 Cluster 模块的负载均衡机制是通用的(因此无法实现粘性会话),而 Passenger 的机制是专门为 HTTP 编写的。 如果您正在使用 Passenger,我们希望您这样做,那么您不能在您的项目中包含 Cluster 模块,因为它与 Passenger

冲突