NodeJS маршруты не вызываются с помощью Express - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь построить базовый c остальные API, используя nodeJS. Но когда я пытаюсь вызвать любую конечную точку, никому из них не звонят. Какие изменения я должен сделать, чтобы заставить это работать. Пожалуйста, помогите.

const express = require('express') ;
const app = express() ;
const morgan = require('morgan') ;
const bodyParser = require('body-parser') ;

const productRoutes = require('./api/routes/products') ;
const orderRoutes = require('./api/routes/orders') ;

console.log('abc1') ;

//middleware
app.use(morgan('dev')) ;
app.use(express.urlencoded({ extended: true }));
app.use(express.json);

console.log('abc2') ;

//routes
app.use('/products' , productRoutes ) ;
//console.log('abc5') ;
app.use('/orders' , orderRoutes) ;


//delete it later
app.get('/' , (req , res, next) => {
    res.status(200).json({
        message: 'done'
    }) ;
}) ;
//delete end

//for 404 / not found error
app.use((req,res,next) => {
    const error = new Error('not found');
    error.status = 404 ;
    next(error);
});

//handle any error
app.use((error , req, res,next) => {
    res.status(error.status || 500) ;
    res.json({
        message : error.message 
    }) ;
});

module.exports = app ;

мое приложение. js файл

const express = require('express') ;
const router = express.Router() ;

router.get('/' , (req,res,next) =>{
    console.log('abc') ;
    res.status(200).json({
        message : 'In get routes'
    }
    ) ;
}) ;

router.post('/' , (req,res,next) =>{
    res.status(201).json({
        message : 'In post routes'
    }
    ) ;
}) ;

router.get('/:productId' , (req,res,next) =>{
    res.status(200).json({
        message : 'In get routes' + req.params.productId 
    }
    ) ;
}) ;

module.exports = router ;

мои продукты. js файл

const http = require('http') ;
const app = require('./app') ;

const port = process.env.PORT || 3000 ;
console.log(port) ;

const server = http.createServer(app);

server.listen(port) ;

мой сервер. js file

Когда я пытаюсь запустить сервер, он работает нормально. И console.logs также работают нормально. А также нет ошибки выдается.

1 Ответ

1 голос
/ 14 марта 2020

Во-первых, измените:

app.use(bodyParser.json);

на:

app.use(bodyParser.json())

Во-вторых, вы не слушаете ни один порт. Вам нужно добавить это в ваше приложение. js:

const port = 4000
app.listen(port, () => console.log(`App is at port: ${port}!`))

и да, добавить sla sh к маршруту (маршрутам):

app.use('/products', productRoutes);
...