невозможно получить / при обслуживании приложения Angular с использованием Express и nodejs - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь обслуживать угловое приложение, используя nodejs.Но я получаю эту ошибку «Cannot GET /» в теле страницы.Я попробовал несколько вещей, но все равно это не работает.у вас есть предложение?

const express = require('express')
const app = express()
var cors = require('cors')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')

const couchDb = require('./modules/couchDb')
const db = couchDb.db
const schedules = require('./modules/schedules')
const stations = require('./modules/stations')
const testConfigs = require('./modules/testConfigs')

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

app.listen(5000, () => console.log('Listening on port 5000'))


////////////////////////////////////////
// View
////////////////////////////////////////
const viewOptions = { include_docs: true }
app.route('/api/schedules').get((req, res) => {
    couchDb.getType('schedule', viewOptions).then(docs => {
        res.send(docs)
    }).catch(err => {
        console.log(err)
        res.send({})
    })
})

app.route('/api/stations').get((req, res) => {
    couchDb.getType('station', viewOptions).then(docs => {
        res.send(docs)
    }).catch(err => {
        console.log(err)
        res.send({})
    })
})

app.route('/api/tests').get((req, res) => {
    couchDb.getType('testConfig', viewOptions).then(docs => {
        res.send(docs)
    }).catch(err => {
        console.log(err)
        res.send({})
    })
})

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Вы получаете эту ошибку, потому что вы не объявляете какие-либо конечные точки или не указываете серверу обслуживать что-либо.Он прослушивает порт 5000, но ответы на любые URL не определены.Вот пример кода, который решит вашу проблему.

const express = require('express')
const app = express()
var cors = require('cors')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')


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

// This block will make it so that every path on port 5000 responds with "Hello, World!"
app.get('*', (req, res) => {
    res.status(200).send("Hello, World!");
});

app.listen(5000, () => console.log('Listening on port 5000'))

Это заставит его отвечать базовым текстом. Если вы хотите обслуживать угловое приложение, вам нужно посмотреть на обслуживание статического контента изэкспресс: https://expressjs.com/en/starter/static-files.html

0 голосов
/ 29 декабря 2018

Вы должны использовать промежуточное программное обеспечение для маршрутизации и сопоставить ваши модули с необходимыми модулями. Также убедитесь, что ваши модули смонтированы в экземпляре маршрутизатора.

Что-то вроде

const express = require('express')
const app = express()
var cors = require('cors')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')

const couchDb = require('./modules/couchDb')
const db = couchDb.db
const schedules = require('./modules/schedules')
const stations = require('./modules/stations')
const testConfigs = require('./modules/testConfigs')

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

//All requests with /schedules will go to './modules/schedules' 
app.use('/schedules', schedules);
app.use('/stations', stations);

app.listen(5000, () => console.log('Listening on port 5000'))

your ./модули / станции должны выглядеть следующим образом:

var express = require('express')
var router = express.Router()

router.get('/', function (req, res) {
  res.send('You are in /station')
})
router.get('/new', function (req, res) {
  res.send('You are in /station/new')
})

module.exports = router

Для более подробной информации: https://expressjs.com/en/guide/routing.html

0 голосов
/ 29 декабря 2018

вы пропустили свои маршруты, например

app.get('/', function (req, res) {
      res.send('hello world')
  })

или вам нужно включить все маршруты через промежуточное ПО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...