Node.js 防止多个Node Express实例

Node.js 防止多个Node Express实例,node.js,express,Node.js,Express,这是带有IIS和IISNODE的Windows服务器(如果相关) 我在app.ts中有以下代码(简化) 在IIS中重新启动站点,然后用请求点击它时,它会在日志脚本生成的日志文件中生成两条“启动应用程序”的记录 这会导致中间件()函数被调用两次。在中间件函数中,我调用另一个函数,该函数设置一些客户端变量并启动一些Cron服务,这些服务是只运行一次的基本服务 如何确保所有操作都只运行一次?可以在this.express.locals()中设置一个标志,并仅在该标志不存在时应用中间件?这个问题缺少。为

这是带有IIS和IISNODE的Windows服务器(如果相关)

我在app.ts中有以下代码(简化)

在IIS中重新启动站点,然后用请求点击它时,它会在日志脚本生成的日志文件中生成两条“启动应用程序”的记录

这会导致中间件()函数被调用两次。在中间件函数中,我调用另一个函数,该函数设置一些客户端变量并启动一些Cron服务,这些服务是只运行一次的基本服务


如何确保所有操作都只运行一次?

可以在
this.express.locals
()中设置一个标志,并仅在该标志不存在时应用中间件?这个问题缺少。为什么有多个应用程序实例?从那里开始。不清楚一个类是在同一个应用程序中实例化了两次还是有两个应用程序实例。@estus“为什么有多个应用程序实例?”-这是我用一种更简单的方式提出的问题:)遗憾的是,没有人知道,因为您没有提供足够的信息。在你的情况下,这怎么可能是未知的。是与代码相关的问题的要求。请提供有关如何找出多个实例的原因的任何建议:)
import * as express from "express";
import log from "../util/log";

class App {
    public express: express.Application;

    constructor() {
        this.express = express();
        log.default.info("starting app");
        this.middleware();
    }

    private middleware(): void {
        log.default.info("starting middleware");
        this.express.use((req: IRequest, res: express.Response, next: express.NextFunction) => {
            this.getAllClientConfigurations(req, res, next);
        });

    etc.....