javascript - 不能 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...
任何帮助都会很棒,谢谢!
解决方案
未导入 userRouter。
你可以试试下面这样的,
app.use('/api', (req, res, next) => {
userRouter(req, res, next);
bookRouter(req, res, next);
})
错误不是因为2个路由器引起的,而是因为端口已经在使用中。
Error: listen EADDRINUSE: address already in use :::8174
推荐阅读
- python - Python Django 无法转到另一个页面中的所需链接
- javascript - 为什么通过 JavaScript 添加样式不起作用
- python - 有没有办法简化这个 if 语句?
- ios - 返回视图时Swift Timer不会重新启动
- javascript - Vue 3 中的 SSR 和 keep-alive 问题:动态组件
- github - GitHub 操作需要从私有 GitHub 注册表恢复 NuGet 包
- reactjs - ELIFECYCLE errno 1 在使用 expo 的反应应用程序中执行 npm start 时:开发服务器崩溃
- prometheus - 带有标签提供的值(状态)的 Grafana 状态时间线面板
- html - 带有垂直资源的完整日历 - 使日边界更加突出
- github - GitHub Actions Env 中的 NPM 未安装包