文件未加载 - 无法获取/

时间:2017-09-30 18:12:26

标签: javascript node.js

在我的users路由文件中,我正在解析以下路由:

router.get("/login", (req, res) => {
    res.render('login')
})

module.exports = router

在我的app.js文件中,我正在加载以下路由:

app.use("/", posts)
app.use("/new", posts)

app.use("/login", users)
app.use("/logout", users)
app.use("/register", users)

当我打开http://localhost:8080/login时,我回来了:

  

无法GET /登录

但是,在我的posts路由器中,我的路由工作正常并在浏览器中正确加载:

router.get("/", (req, res) =>  {
    service.getAllPosts(function(result) {
        res.render("index", {
            postList: result,
        })
    })
})

module.exports = router

出现此错误的任何建议?

1 个答案:

答案 0 :(得分:1)

您的路线定义会以多种方式搞砸。

  1. 假设users是一条路线,您已多次注册同一台路由器。你永远不想那样做。这在路由器链中有多次相同的路由器,这不是你想要的。路由器只能注册一次。

  2. 您已为/login注册了路由器,然后在该路由器上为/login注册了路由。这为/login/login创建了一个路由处理程序。

  3. 要解决此问题,您需要更改路由器的注册方式,以及如何定义路由器的路由。如果路由器上的所有路由都打算使用公共顶级路径段,则只应使用app.use(path, router)的路径。如果没有,则不要使用除/以外的app.use()路径以外的任何其他内容。

    您没有显示足够的路由器定义来确定您的意图,但是如果您只是尝试创建路由器而不是句柄/login/logout和{{1} },然后你可以改变你的/register

    app.use()

    到此:

    app.use("/login", users)
    app.use("/logout", users)
    app.use("/register", users)
    

    这将为您的用户路由器提供查看所有顶级路径段的机会。

    而且,根据app.use("/", users); 的内容,您可能还需要确保代码行在此之前:

    posts

    注意,在同一路径级别使用多个路由器用于不同路由有点不寻常。虽然它可以工作,但它通常不是最直观的设计方式。通常,您将所有路由放在同一路由器上的子路径上,但不会在不同路由器的同一子路径上拆分多条路由。请注意,您不必使用不同的路由器只是为了在不同的文件中传播您的路由。