Express Redis变量未持久化,未在Heroku上设置cookie(在本地工作)

Express Redis变量未持久化,未在Heroku上设置cookie(在本地工作),express,session,cookies,redis,express-session,Express,Session,Cookies,Redis,Express Session,我构建了一个graphql服务器,任何需要通过会话进行验证的查询都无法工作。我可以看到会话变量正在我的日志中设置,但它们在发出另一个请求时不会持久存在。例如,当我登录一个用户时,我将userId设置为会话变量,如下所示: SESSION: Session { cookie: { path: '/', _expires: 2031-04-23T16:32:48.065Z, originalMaxAge: 315360000000, httpOnly: true,

我构建了一个graphql服务器,任何需要通过会话进行验证的查询都无法工作。我可以看到会话变量正在我的日志中设置,但它们在发出另一个请求时不会持久存在。例如,当我登录一个用户时,我将userId设置为会话变量,如下所示:

SESSION: Session {
  cookie: {
    path: '/',
    _expires: 2031-04-23T16:32:48.065Z,
    originalMaxAge: 315360000000,
    httpOnly: true,
    sameSite: 'lax',
    secure: true
  },
  userId: 123456789
}
但是,当我进行查询以验证该用户时,会话如下所示:

Session {
  cookie: {
    path: '/',
    _expires: 2031-04-23T16:32:26.998Z,
    originalMaxAge: 315360000000,
    httpOnly: true,
    sameSite: 'lax',
    secure: true
  }
}
变量userId不再存在,我无法理解它为什么不存在

以下是配置会话的代码:

  app.set('trust proxy', 1)
  
  const RedisStore = connectRedis(session);
  const redis = new Redis(process.env.REDIS_URL);

  app.use(
    session({
      name: COOKIE_NAME,
      store: new RedisStore({
        client: redis,
        disableTouch: true,
      }),
      cookie: {
        maxAge: 1000 * 60 * 60 * 24 * 365 * 10, // 10 years
        httpOnly: true,
        sameSite: 'lax',
        secure: __prod__, 
      },
      secret: (process.env.SESSION_SECRET as string),
      resave: false,
      saveUninitialized: false,
    })
  );