我有两个文件main.js和task.js,前者发送API调用到后者定义的所有方法。
这个main.js文件是
const express = require('express');
let app = express();
let port = 3000
let intro = require("./routes/task.js")
app.use("/",intro)
app.listen(port,()=> console.log("we are activated"))
task.js文件为
let express = require('express')
let route = express.Router();
route.get("",(req,res) =>
{
res.status(200).send("Welcome")
})
route.get("hello",(req,res) =>
{
res.status(200).send("We are in Hello page")
})
module.exports = route
现在,当我转到localhost:3000
时,我得到了正确的输出,即打印了“welcome”。但是,当我导航到localhost:3000/hello时,我得到了如下错误
Cannot GET /hello
我认为在route中,无论我们在main.js中的base route和task.js中的route path中定义了什么,两者都会被连接起来,那么为什么我的get方法“hello”不起作用呢?
2条答案
按热度按时间blmhpbnm1#
我认为它不起作用,因为您设置了使用
intro
的基本路径(/)。当我将其更改为以下内容时,它对我起作用:gxwragnw2#
您仍然希望
router.get
位于router.get
调用的路径上,因此:而不仅仅是
router.get("hello")
。(我已经在本地检查了这个问题,它修复了这个问题。)您可以从路由器文档中的示例中看到这一点,该示例在路由器上使用
/events
,然后通过app.use("/calendar", router)
挂载,这与您的用例非常相似:一旦你创建了一个路由器对象,你就可以像一个应用程序一样向它添加中间件和HTTP方法路由(比如get、put、post等等)。
然后,您可以使用路由器为特定的根URL,以这种方式将您的路由分离到文件,甚至迷你应用程序。