【发布时间】:2021-03-17 00:01:06
【问题描述】:
在一个使用 express.js 的 node,js 应用程序中,我有一个中间件,它重定向到一个会话结束的页面,该页面是用 nunjucks 编写的。
重定向工作将页面输出为书面而不是html。由于某种原因,它没有被识别为 nunjucks。
nunjucks.configure(['views',
path.join(__dirname, 'node_modules/govuk-frontend/'),
path.join(__dirname, 'node_modules/govuk-frontend/govuk/components/'),
path.join(__dirname, 'app/views/')
], {
autoescape: true,
express: app
});
const endSession = (req, res, next) => {
if (config.switchPage) {
res.render(__dirname + '/app/views/pages/session-ended.html');
return;
} else {
next();
}
};
app.use(endSession);
在其他地方,我将页面调用为:
res.redirect('/decision/session-ended');
而且效果很好。
我已尝试将 sendfile 交换为重定向,但在页面上收到以下错误消息:
此页面无效
localhost 将您重定向了太多次。
尝试清除您的 cookie。
ERR_TOO_MANY_REDIRECTS
==== 附加信息 ====
这个中间件在这里开始:
const getApplicationRef = (req, res) => {
req.session.accessPage = '/decision/application-reference';
res.render('pages/application-reference', { appRef: req.session.appRef });
};
调用:
const express = require('express');
const router = express.Router();
const { getApplicationRef, submitApplicationRef } = require('../../services/handler/application/application-ref-handler');
router.get('/', getApplicationRef);
router.post('/', submitApplicationRef);
module.exports = router;
getApplicationRef =
const getApplicationRef = (req, res) => {
req.session.accessPage = '/decision/application-reference';
res.render('pages/application-reference', { appRef: req.session.appRef });
};
下面是一些正确呈现页面的代码:
const getSecurityCode = (req, res) => {
if (req.session.appRef) {
req.session.accessPage = '/decision/security-code';
res.render('pages/security-code', { secCode: req.session.secCode });
} else {
res.redirect('/decision/session-ended');
}
};
【问题讨论】: