Node.js 节点应用程序未返回我要查看的路径

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

我有一个节点应用程序,使用EJS作为模板引擎

当我查看主页时,我可以很好地看到文档。我也可以添加带有POST请求的文档。但当需要添加“编辑文档”页面和按钮时,每当我尝试添加或编辑文档时,我都会看到404个错误

My app.js:

添加和编辑页面的我的路线:

我的控制器(注意,GetBriefs正在工作。getAddBriefs和getEditBrief不工作):

//看到一切了吗

  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);