以上代码会报错Router.use() requires a middleware function but got a Object
时间: 2024-03-26 09:38:40 浏览: 126
如果你将 `router` 和 `app` 导出到同一个对象中,然后在其他文件中解构导入时,你需要注意在使用 `router.use()` 时,`router` 对象必须是一个中间件函数。如果你直接将对象传递给 `router.use()`,会导致错误 `Router.use() requires a middleware function but got a Object`。
为了解决这个问题,你需要将 `router` 对象包装成一个中间件函数。你可以使用 `app.use()` 方法将 `router` 对象挂载到主应用程序中,从而创建一个中间件函数。例如:
```
const express = require('express');
const app = express();
const router = express.Router();
// 定义路由
router.get('/', (req, res) => {
res.send('Hello, world!');
});
// 将 router 对象挂载到 app 中,创建一个中间件函数
app.use('/', router);
// 导出 router 和 app
module.exports = {
router,
app
};
```
这样,在其他文件中解构导入 `router` 和 `app` 对象时,你可以直接将 `router` 对象传递给 `router.use()`,并将 `app` 对象用于启动服务器。例如:
```
const express = require('express');
const { router, app } = require('./my-module');
// 在 router 中定义路由
router.get('/about', (req, res) => {
res.send('About us');
});
// 在 app 中使用 router,创建一个中间件函数
app.use('/', router);
// 启动服务器
app.listen(3000, () => {
console.log('Server started on port 3000');
});
```
这样,你就可以在应用程序中使用 `router` 和 `app` 对象了。
阅读全文