Node.js 节点应用程序未返回我要查看的路径
我有一个节点应用程序,使用EJS作为模板引擎 当我查看主页时,我可以很好地看到文档。我也可以添加带有POST请求的文档。但当需要添加“编辑文档”页面和按钮时,每当我尝试添加或编辑文档时,我都会看到404个错误 My app.js: 添加和编辑页面的我的路线: 我的控制器(注意,GetBriefs正在工作。getAddBriefs和getEditBrief不工作): //看到一切了吗Node.js 节点应用程序未返回我要查看的路径,node.js,api,routes,ejs,Node.js,Api,Routes,Ejs,我有一个节点应用程序,使用EJS作为模板引擎 当我查看主页时,我可以很好地看到文档。我也可以添加带有POST请求的文档。但当需要添加“编辑文档”页面和按钮时,每当我尝试添加或编辑文档时,我都会看到404个错误 My app.js: 添加和编辑页面的我的路线: 我的控制器(注意,GetBriefs正在工作。getAddBriefs和getEditBrief不工作): //看到一切了吗 exports.getBriefs = (req, res, next) => { Brief.fi
exports.getBriefs = (req, res, next) => {
Brief.find()
.then(briefs => {
res.render('brief', {
Brief: briefs,
pageTitle: 'All Briefs',
path: '/',
});
})
.catch(err => {
console.log(err);
});
};
//添加文档
exports.getAddBrief = (req, res, next) => {
res.render('add-brief', {
pageTitle: 'Add Brief',
path: '/admin/add-brief',
editing: false
});
};
//编辑文档
exports.getEditBrief = (req, res, next) => {
const editMode = req.query.edit;
if (!editMode) {
return res.redirect('/');
}
const briefId = req.params.briefId;
Brief.findById(briefId)
.then(brief => {
if (!brief) {
return res.redirect('/');
}
res.render('edit-brief', {
pageTitle: 'Edit Brief',
path: '/admin/edit-brief',
editing: editMode,
brief: brief
});
})
.catch(err => console.log(err));
};
我错过了什么?还是仅仅是一个打字错误让我卡住了?URL是我想要看到的“/admin/add-brief”和“edit-brief:Id”,但我仍然得到404错误。在你的app.js文件中,你有这行代码
app.use('/admin', adminRoutes);
这意味着,当url以admin
开头时,您的代码将转到adminRoutes
文件以查找正确的路由
现在,在adminRoutes文件中有了此路由定义
router.get('/admin/add-brief', isAuth, briefsController.getAddBrief);
这意味着为了运行briefsController.getAddBrief
中间件,url必须是localhost:3002/admin/admin/add-brief
看到区别了吗?您必须在adminRoutes中删除路由的admin
部分
router.get('/add-brief', isAuth, briefsController.getAddBrief);
在
adminRoutes
内部,删除所有路由url的admin
部分。您已经在app.js中声明了它您确定URL是正确的吗?添加
和编辑
页面的路由在“简要路由”内?它们在adminRoutes内。这也许可以解释为什么获取所有路径都有效。它在我的路径文件夹中的我的admin.js中。但是URL是:这就是我想要看到的。除非它们不是有效路径,因为我看到页面未找到错误。如果我键入“admin/admin/add-brief”,我不应该能够访问该页面吗?更新:这是它与一个额外的皱纹。我将add-brief.ejs和edit-brief.ejs页面从“views”目录中的“admin”文件夹中移出,解决了这个问题。现在Post请求不太有效,但至少我可以看到表单。非常感谢。
router.get('/admin/add-brief', isAuth, briefsController.getAddBrief);
router.get('/add-brief', isAuth, briefsController.getAddBrief);