NodeJS路由未使用Express进行调用



我正在尝试使用nodeJS构建一个基本的rest api。但是,当我尝试调用任何端点时,它们都不会被调用。为了让它发挥作用,我应该做什么改变。请帮忙。

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 ;

我的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 ;

我的products.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) ;

我的server.js文件

当我尝试运行服务器时,它会正常运行。console.log也运行良好。而且没有出现任何错误。

首先,更改您的:

app.use(bodyParser.json);

至:

app.use(bodyParser.json())

其次,您没有监听任何端口。你需要将其添加到你的app.js:

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

是的,在路线上加一个斜线:

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

最新更新