Javascript 在运行时使用params更改nodejs路由
我需要在nodejs中的运行时更改路由参数 在我的代码中,我使用以下方法设置路线:Javascript 在运行时使用params更改nodejs路由,javascript,node.js,express,Javascript,Node.js,Express,我需要在nodejs中的运行时更改路由参数 在我的代码中,我使用以下方法设置路线: const troutes = require('./src/routes/testroutes')(page,sessionId) app.use('/teste' + sessionId, troutes) 但是,在运行时,有时会重新创建“page”对象参数,使其无效。但是“sessionId”参数是相同的,没有变化。 然后我创建了一个新的“页面”,需要重新创建路由,因为旧路由有一个无效页面。 如果我使用:
const troutes = require('./src/routes/testroutes')(page,sessionId)
app.use('/teste' + sessionId, troutes)
但是,在运行时,有时会重新创建“page”对象参数,使其无效。但是“sessionId”参数是相同的,没有变化。
然后我创建了一个新的“页面”,需要重新创建路由,因为旧路由有一个无效页面。
如果我使用:
let page={newpage};
const troutes = require('./src/routes/testroutes')(page,sessionId);
我的URL不工作,因为路由使用旧的无效“页面”参数对象
如何删除或更改旧路由,并将新路由与新“页面”对象一起使用
//server.js
const express = require('express')
const app = express()
const server = require('http').Server(app)
const port = 3001
const host = 'http://localhost'
const callbackUrl = `${host}:${port}`;
let page={page};
let sessionId='sessionId';
const troutes = require('./src/routes/testroutes')(page,sessionId)
app.use('/teste' + sessionId, troutes)
....
});
//routes.js
const express = require('express');
const router = express.Router();
module.exports = function (page,sessionId) {
router.get('/'+sessionId+'/getMyNumber', async (req, res) => {
const cc = await page.evaluate(() => {
return getMyNumber();
});
console.log(cc);
res.send({ "data": cc });
});
return router;
}
因为您在文件中只调用了一次
require('./src/routes/testroutes')(page,sessionId)
方法,所以它只加载一次。因此,函数中传递的参数/初始化只执行一次
初始化并返回的路由器用于进一步的请求处理,所以新的请求只会触发路由器的方法
若您希望页面是动态的,那个么若您将页面移动到路由器内部,而不是像下面那个样从包装器函数传递页面,那个么它就会工作
const express = require('express');
const router = express.Router();
module.exports = function (sessionId) {
router.get('/'+sessionId+'/getMyNumber', async (req, res) => {
let page = {newPage}
const cc = await page.evaluate(() => {
return getMyNumber();
});
console.log(cc);
res.send({ "data": cc });
});
return router;
}
谢谢你的关注。我不能在模块内使用该页面,因为该页面是使用Puppeter创建的chrome页面。当chrome页面崩溃时,我重新创建页面,并将新页面传递给路由器模块。然后,页面始终从路由器模块外部创建。我在chrome页面中加载了一些js函数,要访问这些函数,我需要传递到正确的页面。我需要找到旧路由,将其删除或更新以与新页面一起使用。我不会只调用模块一次,我会调用require('./src/routes/testroutes')(page,sessionId)所有方式我都有一个新页面。因为,我的URL只有在使用新页面访问时才有效。当我有一个新页面时,我使用:const troutes=require('./src/routes/testroutes')(page,sessionId)app。再次使用('/teste'+sessionId,troutes)。但是,在路由器中,当我调用我的URL时,我可以看到页面显示关闭的属性。这表示路由器正在使用旧页。