Node.js 如何在多条快递路线(不同的文件)中使用一个坚固的cookie罐?

Node.js 如何在多条快递路线(不同的文件)中使用一个坚固的cookie罐?,node.js,express,cookies,Node.js,Express,Cookies,我在NodeJS上有一个expressapi,它可以获取需要登录的网站的用户信息。登录将用户登录到其在线帐户(使用节点获取请求)。在这个过程中,使用tough cookieCookieJar()设置了一组cookie(会话和其他),并将其存储到网站中。我需要这个,因为我在登录时发出多个请求,每个请求取决于每个特定网站上存储的cookies(主要是重定向) 现在,我有了另一个路由,email(在一个单独的文件中),它获取(使用GET请求)登录用户的电子邮件地址。但是,我注意到,当我向电子邮件路由发

我在NodeJS上有一个expressapi,它可以获取需要登录的网站的用户信息。
登录
将用户登录到其在线帐户(使用
节点获取
请求)。在这个过程中,使用
tough cookie
CookieJar()
设置了一组cookie(会话和其他),并将其存储到网站中。我需要这个,因为我在登录时发出多个请求,每个请求取决于每个特定网站上存储的cookies(主要是重定向)

现在,我有了另一个路由,
email
(在一个单独的文件中),它获取(使用GET请求)登录用户的电子邮件地址。但是,我注意到,当我向
电子邮件
路由发出GET请求时,它返回供用户登录的页面,而不是用户电子邮件的预期JSON对象。我认为来自登录路径的cookie jar会从另一个页面持续存在,但它没有。我怎样才能在多个路由中(在不同的文件中)使用一个cookie jar

GitHub存储库(包含有关其方法的信息):

代码:

server.js

const express=require('express'))
const app=express()
常数端口=3000
应用程序使用('/email',要求('/email'))
app.use('/login',require('/login'))
应用程序侦听(端口)
login.js

const express=require('express'))
const fetch=require('node-fetch')
const router=express.router()
const-tough=require('tough-cookie')
const cookieJar=new-tough.cookieJar()
常量handleRedirect=(响应)=>{
//在每次重定向时将cookie存储到cookie jar
}
路由器.post(“/”,(请求,res)=>{
//多个提取请求
})
module.exports=路由器
email.js

const express=require('express'))
const fetch=require('node-fetch')
const router=express.router()
路由器.get(“/”,(请求,res)=>{

取回("好的,我找到了一种方法。我首先必须在
server.js
文件中使用
express session
。然后,在
登录
路由中的最后一个
节点fetch
请求上设置
req.session.cookieJar=cookieJar
。最后,
反序列化
电子邮件中的
req.session.cookieJar
通过执行以下操作进行布线:

const-tough=require('tough-cookie')
var cookieJar=null
deserialize(req.session.CookieJar,(error,deserializedJar)=>{
if(error)抛出新错误(“反序列化失败”)
cookieJar=反序列化djar
})
完整代码:

server.js

const express=require('express'))
const app=express()
常数端口=3000
应用程序使用(会话)({
秘密:“秘密密钥”,
resave:false,
saveUninitialized:false
})
应用程序使用('/email',要求('/email'))
app.use('/login',require('/login'))
应用程序侦听(端口)
login.js

const express=require('express'))
const fetch=require('node-fetch')
const-tough=require('tough-cookie')
const router=express.router()
const cookieJar=new-tough.cookieJar()
常量handleRedirect=(响应)=>{
//在每次重定向时将cookie存储到cookieJar(使用setCookie)
}
路由器.post(“/”,(请求,res)=>{
//多次提取请求,并在每次请求后调用handleRedirect
//在最后一次获取请求时设置req.session.cookieJar=cookieJar
})
module.exports=路由器
email.js

const express=require('express'))
const fetch=require('node-fetch')
const-tough=require('tough-cookie')
const router=express.router()
var cookieJar=null
router.get('/',(req,res)=>{]
deserialize(req.session.CookieJar,(error,deserializedJar)=>{
if(error)抛出新错误(“反序列化失败”)
cookieJar=反序列化djar
})
取回(“{
标题:{
cookie:cookieJar.getCookieStringSync(“”)
}    
})
.then(response=>response.text())
.然后(数据=>res.send(数据))
.catch(错误=>console.log(“错误:+错误))
})
module.exports=路由器