【问题标题】:Can't get axios to perform get without full url没有完整的url,无法让axios执行get
【发布时间】:2020-08-23 17:38:01
【问题描述】:

每次我尝试在我的 axios 请求中使用 /bikes 或 /bikes/add 时,它似乎永远无法连接。我总是得到这样的东西:

xhr.js:178 GET http://localhost:3000/bikes/ 404(未找到)

但是,当我使用完整的网址时,例如:http://localhost:4000/bikes/,它会完美连接。我尝试弄乱 server.js 中的 app.get,我的路由文件中的 get,以及我的 bikes-list 文件中的实际 axios.get,但无济于事。

有人有什么想法吗?这是 MERN 应用的一部分。

bikes-list.js(组件) sn-p:

componentDidMount() {
    axios.get('/bikes/')
        .then(response => {
            this.setState({bikes: response.data});
        })
        .catch(function (error){
            console.log(error);
        })
}

server.js sn-p:

app.use('/bikes', bikeRoutes);

bikes.js(路线) sn-p:

router.get('/',function(req, res) {
Bikes.find(function(err, bikes) {
    if (err) {
        console.log(err);
    } else {
        res.json(bikes);
    }
}); });

谢谢!

【问题讨论】:

  • 3000 上的服务是什么?它有 4000 的代理吗?
  • 除非您告诉它,否则它应该如何知道您要向不同的服务器(在端口 4000 上运行)而不是 HTML 文档来自的服务器(在端口 3000 上)发出请求?

标签: javascript express routes axios mern


【解决方案1】:

可能是你在使用/bikes时没有使用正确的端口?一种解决方案是创建一个像这样的小模块:

// client.js

var axios = require('axios');

var axiosInstance = axios.create({
    baseURL: 'http://localhost:4000',
    /* other custom settings */
});

module.exports = axiosInstance;

然后在你的代码中使用这个新模块而不是需要 axios 直接:

var client = require('./client');

client.get('relative/path')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多