Express Маршрутизатор не может маршрутизировать в другую папку - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь создать приложение Node JS с mongoDB. из основного приложения. js Я пытаюсь перенаправить в другую папку с именем «services». Вот моя структура папок -

Folder Structure

Вот мое приложение. 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}!`))

Вот мой индекс. Файл 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 он работает нормально. Но если я попытаюсь запустить http://localhost: 3000 / services , он выдаст Cannot GET /services. Я не могу это исправить.

Как перенаправить на индекс. js из приложения. js, когда пользователи вызывают http://localhost: 3000 / services ?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Да, поскольку вы не правильно добавили ссылку на маршруты обслуживания.
Удалите express .stati c из ссылки, поскольку вы уже импортировали маршруты обслуживания в переменную, затем просто используйте ее и это будет работать как ожидалось. Просто записка. Express .stati c используется для загрузки / использования stati c файлов, таких как 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}!`))
1 голос
/ 06 февраля 2020

изменить

app.use('/services', express.static('/services'))

на

app.use('/services', services);

express .stati c используется для обслуживания файлов * stati c, похоже, что вы используете wi sh роутер и не вернуть стати c файлы. Вот почему сервер не отвечает так, как вам нравится

...