【问题标题】:nodejs express cannot get the url and data from node servernodejs express 无法从节点服务器获取 url 和数据
【发布时间】:2022-01-11 12:43:02
【问题描述】:

编写简单的应用程序从 nodejs 服务器获取数据。

但它似乎无法在浏览器和 POSTMAN 中获取文件。我多次尝试检查网址,但无济于事。

这是我的文件:

app.js

const express = require('express');
const bodyParser = require('body-parser');
const router = require('./Routes/routes');

const hostname = "localhost";
const port = "8055";

const app = express();

app.use(bodyParser.json());

// CORS
 app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods','GET,POST,PUT,PATCH,DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    next();
    });

    app.use('/', router);
    app.listen(port,hostname, () => {
    console.log('Server is running on http://${hostname}:${port}');
    })

routes.js

    const express = require('express')

var CityListController = require('../Controllers/City')
var RestaurantCityController = require('../Controllers/Restaurants')
var MenuController = require('../Controllers/Menu')


const router = express.Router();

router.get('/getCityList',CityListController.getCityList);
router.get('/getRestaurantsByCity/:cityname', RestaurantCityController.getRestaurantsByCity);
router.get('/getMenu', MenuController.getMenu);

module.exports = router;

Menu.js

const mealtypes = require('../Models/menu.json');

exports.getMenu = (req, res) => {
const resultname = mealtypes.map(items => items.name)

res.status(200).json({
    message: "widgets data fetched successfully",
    name : resultname
 
   })
 }

menu.json 是这样的

[
{
    "_id": "1",
    "name": "Breakfast",
    "content": "Start your day with exclusive breakfast options",
    "image": "assets/breakfast.png"
},
{
    "_id": "2",
    "name": "Lunch",
    "content": "Start your day with exclusive breakfast options",
    "image": "assets/lunch.png"
}
 ]

错误是 无法获取 /getMenu

不确定错误在哪里,因为它是一条简单的路线..不确定缺少什么。 谢谢

【问题讨论】:

  • 您是否尝试过删除 CORS?路由器似乎没有注册。此外,您不需要使用bodyParser.json(),因为它将由 express v4+ 自动完成。
  • 尝试从/getMenu中删除router.js文件中多余的斜杠(/),它应该是“getMenu”

标签: javascript node.js json mongodb express


【解决方案1】:

您的代码应该可以使用 http://localhost:8055/getMenu。我复制了你的代码并为我工作link to repo

{
    "message": "widgets data fetched successfully",
    "name": [
        "Breakfast",
        "Lunch"
    ]
}

【讨论】:

    【解决方案2】:

    错误Cannot GET /是由于尝试访问http://localhost:8055引起的

    • 是因为根目录http://localhost:8055/没有使用express中的路径/的路由而产生的。

    • http://localhost:8055/getMenu 的路线,效果很好。

    测试代码

    const express = require('express');
    
    const getMenu = (req,res) => res.status(200).json({ test_data: "test_data"});
    const router = express.Router();
    router.get('/getMenu', getMenu);
    
    const hostname = "localhost";
    const port = "8055";
    
    const app = express();
    app.use('/', router);
    app.listen(port,hostname, () => {
        console.log(`Server is running on http://${hostname}:${port}`);
    })
    

    【讨论】:

      【解决方案3】:

      似乎出现了技术错误。

      现在工作正常。我刚刚重启了 nodemon app.js。

      它现在正在工作。一直在尝试修复网址。

      感谢大家的帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-26
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 2019-07-08
        • 2018-02-09
        相关资源
        最近更新 更多