Express Router 无法路由到另一个文件夹
Express Router unable to route to another folder
我正在尝试使用 mongoDB 创建一个 Node JS 应用程序。从 main app.js 我正在尝试重定向到另一个名为 "services" 的文件夹。这是我的文件夹结构 -
这是我的 app.js -
const express = require('express')
const mongoose = require('mongoose')
const dotenv = require('dotenv')
const cors = require('cors')
const bodyParser = require('body-parser')
const app = express()
const users = require('./userSchema')
const services = require('./services/index')
app.use('/services', express.static('/services'))
app.use(express.static('/'));
app.use(cors())
dotenv.config()
const port = 3000
mongoose.connect(process.env.DB_CONNECT,
{
useUnifiedTopology: true,
useNewUrlParser: true,
useFindAndModify: false
})
.then(() => console.log('Connected to mongoDB'))
.catch(err => console.error('Could not connect to MongoDB..', err))
const jsonParser = bodyParser.json()
app.get('/allName', async (req, res) => {
let data = await users.find()
res.status(200).send(data)
})
app.listen(port, () => console.log(`Demo app listening on port ${port}!`))
这是我在服务文件夹中的 index.js 文件 -
var express = require('express')
var router = express.Router()
router.get('/', function (req, res) {
res.send('Birds home page')
})
router.get('/about', function (req, res) {
res.send('About birds')
})
module.exports = router
而运行http://localhost:3000/allName , it is working fine. But if i try to run http://localhost:3000/services,则在抛出Cannot GET /services
。我无法解决这个问题。
如何在用户触发 http://localhost:3000/services 时从 app.js 重定向到 index.js?
改变
app.use('/services', express.static('/services'))
进入
app.use('/services', services);
express.static 用于提供静态文件,看起来您希望使用路由器而不是 return 静态文件。这就是为什么服务器没有按你喜欢的方式响应
是的,因为您没有正确添加服务路线的引用。
从引用中删除 express.static,因为您已经在变量中导入了服务路由,然后只需使用它,它就会按预期工作。
只是一张纸条。 Express.static 用于 load/use 静态文件,如 css 或图像或类似的东西。
检查下面的代码。
const express = require('express')
const mongoose = require('mongoose')
const dotenv = require('dotenv')
const cors = require('cors')
const bodyParser = require('body-parser')
const app = express()
const users = require('./userSchema')
const services = require('./services/index')
**app.use('/services', services)** // change this into your code.
app.use(express.static('/'));
app.use(cors())
dotenv.config()
const port = 3000
mongoose.connect(process.env.DB_CONNECT,
{
useUnifiedTopology: true,
useNewUrlParser: true,
useFindAndModify: false
})
.then(() => console.log('Connected to mongoDB'))
.catch(err => console.error('Could not connect to MongoDB..', err))
const jsonParser = bodyParser.json()
app.get('/allName', async (req, res) => {
let data = await users.find()
res.status(200).send(data)
})
app.listen(port, () => console.log(`Demo app listening on port ${port}!`))
我正在尝试使用 mongoDB 创建一个 Node JS 应用程序。从 main app.js 我正在尝试重定向到另一个名为 "services" 的文件夹。这是我的文件夹结构 -
这是我的 app.js -
const express = require('express')
const mongoose = require('mongoose')
const dotenv = require('dotenv')
const cors = require('cors')
const bodyParser = require('body-parser')
const app = express()
const users = require('./userSchema')
const services = require('./services/index')
app.use('/services', express.static('/services'))
app.use(express.static('/'));
app.use(cors())
dotenv.config()
const port = 3000
mongoose.connect(process.env.DB_CONNECT,
{
useUnifiedTopology: true,
useNewUrlParser: true,
useFindAndModify: false
})
.then(() => console.log('Connected to mongoDB'))
.catch(err => console.error('Could not connect to MongoDB..', err))
const jsonParser = bodyParser.json()
app.get('/allName', async (req, res) => {
let data = await users.find()
res.status(200).send(data)
})
app.listen(port, () => console.log(`Demo app listening on port ${port}!`))
这是我在服务文件夹中的 index.js 文件 -
var express = require('express')
var router = express.Router()
router.get('/', function (req, res) {
res.send('Birds home page')
})
router.get('/about', function (req, res) {
res.send('About birds')
})
module.exports = router
而运行http://localhost:3000/allName , it is working fine. But if i try to run http://localhost:3000/services,则在抛出Cannot GET /services
。我无法解决这个问题。
如何在用户触发 http://localhost:3000/services 时从 app.js 重定向到 index.js?
改变
app.use('/services', express.static('/services'))
进入
app.use('/services', services);
express.static 用于提供静态文件,看起来您希望使用路由器而不是 return 静态文件。这就是为什么服务器没有按你喜欢的方式响应
是的,因为您没有正确添加服务路线的引用。
从引用中删除 express.static,因为您已经在变量中导入了服务路由,然后只需使用它,它就会按预期工作。
只是一张纸条。 Express.static 用于 load/use 静态文件,如 css 或图像或类似的东西。
检查下面的代码。
const express = require('express')
const mongoose = require('mongoose')
const dotenv = require('dotenv')
const cors = require('cors')
const bodyParser = require('body-parser')
const app = express()
const users = require('./userSchema')
const services = require('./services/index')
**app.use('/services', services)** // change this into your code.
app.use(express.static('/'));
app.use(cors())
dotenv.config()
const port = 3000
mongoose.connect(process.env.DB_CONNECT,
{
useUnifiedTopology: true,
useNewUrlParser: true,
useFindAndModify: false
})
.then(() => console.log('Connected to mongoDB'))
.catch(err => console.error('Could not connect to MongoDB..', err))
const jsonParser = bodyParser.json()
app.get('/allName', async (req, res) => {
let data = await users.find()
res.status(200).send(data)
})
app.listen(port, () => console.log(`Demo app listening on port ${port}!`))