首页 > 解决方案 > express.Router() 是否需要导出才能工作?app.use() 的第二个参数似乎无法硬编码,只有在导入时才有效

问题描述

我正在关注一本编码书,但遇到了 express.Router() 的问题。我是新手,因为我主要使用 React。

我的问题是,在路由时,我使用过:

import express from 'express'
import users from './api/users.route.js'

const app = express()

const router = express.Router()

//use route
app.use("/api/v1/users", router.route('/').get((req, res) => res.end('Test Users')))

export default app

我想先关注一下下面的代码。

app.use("/api/v1/users", router.route('/').get((req, res) => res.end('Test Users')))

所以基本上上面的代码是抛出一个错误

Router.use() requires a middleware function but got a Object

现在有趣的是,如果我只在 app.use() 中编写第二个参数(见下文)

router.route('/').get((req, res) => res.end('Test Users'))

并从已导出为路由器的文件中获取它

import express from 'express'

const router = express.Router()

router.route('/').get((req, res) => res.end('Test Users!'))

export default router

然后像这样导入它并在 app.use() 的第二个参数中使用它(用户是导出默认路由器中的“路由器”)

app.use("/api/v1/users", users)

突然之间,代码起作用了。

重申一下,我基本上要说的是

app.use("/api/v1/users", users)

作品。但...

app.use("/api/v1/users", router.route('/').get((req, res) => res.end('Test Users')))

不工作...

为什么?

标签: node.jsexpress

解决方案


推荐阅读