我正在开发javascript应用程序,但遇到了一些问题。
我要导出两个路由器,这是我的代码:
const {Router} = require('express')
const car = require('./car')
const user = require('./user')
// Routing
const routerCar = new Router()
routerCar.use('/car', car)
const routerUser = new Router()
routerUser.use('/user', user)
// 404 Error handler
routerCar.use((req, res, next) => res.status(404).send({error: 'Routing not found'}))
routerUser.use((req, res, next) => res.status(404).send({error: 'Routing not found'}))
// 500 Error handler
routerCar.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).send({error: 'Server error'})
})
routerUser.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).send({error: 'Server error'})
})
module.exports = {
routerCar,
routerUser
};
如果仅导出一台路由器,则一切正常,例如:
module.exports= routerCar
但是如果我要导出多个路由器:
module.exports = {
routerCar,
routerUser
};
我出错了。
TypeError: Router.use() requires a middleware function but got a Object
这也是我的app.js:
const http = require('http')
const { env, port, ip, apiRoot } = require('./config')
const express = require('./services/express')
const api = require('./api')
const app = express(apiRoot, api)
const server = http.createServer(app)
setImmediate(() => {
server.listen(port, ip, () => {
console.log('Express server listening on http://%s:%d, in %s mode', ip, port, env)
})
})
module.exports = app
还有index.js:
const express = require('express')
const bodyParser = require('body-parser')
const expressConfig = (apiRoot, routes) => {
const app = express()
app.use(bodyParser.json()) // obsluga dekodowania JSON
app.use(apiRoot, routes)
return app
}
module.exports = expressConfig
我该如何解决?预先谢谢你。
编辑:
“ require('./ car')”的来源:
const { Router } = require('express')
const { createCar,showCars,updateCarById, showCarById ,destroyCarById,createReservationForCarId,showReservationByUserId,destroyReservationByUserId} = require('./controller')
const router = new Router()
router.post('/',
createCar)
router.get('/',
showCars)
router.get('/:id',
showCarById)
router.put('/:id',
updateCarById)
router.delete('/:id',
destroyCarById)
router.put('/:id/reservation',
createReservationForCarId)
router.get('/:id/reservation/:userID',
showReservationByUserId)
router.delete('/:id/reservation/:userID',
destroyReservationByUserId)
module.exports = router
对于用户:
const { Router } = require('express')
const {addUser,showUsers,showUserByID,updateUserByID,destroyUserByID} = require('./controller')
const router = new Router()
router.post('/',
addUser)
router.get('/',
showUsers)
router.get('/:id',
showUserByID)
router.put('/:id/',
updateUserByID)
router.delete('/:id',
destroyUserByID)
module.exports = router