Express router : Router.use() 需要一个中间件函数但是得到了一个对象

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

我知道 SO 中有很多问题,但其中 none 给了我一个解决方案

routes/authentication/index.js

import { Router } from 'express'

const router = Router();

router.get('/', (_req, _res) => console.log("Works"))

// module.exports = router                    <-- this works
export default router                      // <-- this doesn't

constants.js

const ROUTES = {
    'AUTHENTICATION' : require('../routes/authentication')
}

export default ROUTES

并在 app.js 中用作

import express from 'express'
import connectDatabase from './connectDb';
import ROUTES from './constants';
const app = express();

if (process.env.NODE_ENV !== 'production') {
  require('dotenv').config();
}
connectDatabase()

app.get('/', (_req, res) => {
  res.send("hello world")
})

app.use('/auth', ROUTES.AUTHENTICATION)

export default app;

现在 module.exports = router 有效,但 export default router 会抛出错误

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

我试图找到问题的原因,但找不到。 提前致谢

require constants.js 中的路由器文件,因此 module.exports 有效。

要使 export default router 正常工作,您需要将其导入。