首页 > 解决方案 > 不能 app.use 在我的 index.js 文件中使用两个不同的路由器

问题描述

您好,我正在尝试创建一个反应应用程序,但我遇到了后端问题。

我有一个这样的索引文件

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')

const db = require('./db')
const bookRouter = require('./routes/book-router')
const userRouter = require('./routes/user-router')



const app = express()
const PORT = process.env.PORT || 8174

app.use(bodyParser.urlencoded({ extended: true }))
app.use(cors())
app.use(bodyParser.json())
app.use(express.json())

db.on('error', console.error.bind(console, 'MongoDB connection error:'))


app.get('/', (req, res) => {
    res.send('Hello People!')
})


//set up routes
app.use('/api', bookRouter) // the issue is here
app.use('/user', userRouter)
//commenting one of these lines makes the app work

app.listen(PORT, () => console.log(`Server running on port ${PORT}`))

所以我的应用程序不工作的原因是应用程序的错误。如果我将其中一个注释掉,服务器运行正常,但如果我将它们都留在文件中未注释掉,那么它们的应用程序将因此错误而崩溃

events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::8174
    at Server.setupListenHandle [as _listen2] (net.js:1280:14)
    at listenInCluster (net.js:1328:12)
    at Server.listen (net.js:1415:7)
    at Function.listen (/home/devinshawntripp/unt-library-system/server/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/devinshawntripp/unt-library-system/server/index.js:30:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Emitted 'error' event at:
    at emitErrorNT (net.js:1307:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
[nodemon] app crashed - waiting for file changes before starting...

任何帮助都会很棒,谢谢!

标签: javascriptjsonreactjsexpressrouter

解决方案


未导入 userRouter。

你可以试试下面这样的,

app.use('/api', (req, res, next) => {
    userRouter(req, res, next);
    bookRouter(req, res, next);
})

错误不是因为2个路由器引起的,而是因为端口已经在使用中。

Error: listen EADDRINUSE: address already in use :::8174


推荐阅读