Express和create-react-app API请求

时间:2018-04-03 08:02:42

标签: javascript reactjs api express

我正在localhost:3000上运行我的create-react-app我在package.json设置了一个代理,指向我的服务器运行的位置(localhost:3001

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.0",
    "react": "^16.3.0",
    "react-dom": "^16.3.0",
    "react-scripts": "1.1.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:3001"
}

这是我的app.js文件:

import React, { Component } from 'react'
import axios from 'axios'

class App extends Component {
  componentDidMount () {
    axios.post('/users')
    .then(res => {
      console.log(res) 
    })
  }

  render() {
    return <div>Hello</div>
  }
}

和我的users.js甚至没有做任何事情:

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

router.post('/users', function(req, res, next) {
  // empty body
}

为什么我会收到404?为什么要尝试从localhost:3000获取资源?根据我的理解,设置代理将允许React应用程序与Express服务器通信。

enter image description here

注意:请求使用GET,但我正在尝试执行POST请求,此错误只出现在POST中。

编辑:这是Express的部分配置文件:

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

app.use('/', indexRouter);
app.use('/users', usersRouter);

1 个答案:

答案 0 :(得分:0)

默认情况下,当React无法在代理(localhost:3001)上找到提供的路由时,会将您重定向到端口3000。 我想你应该使用axios.post('/ api / users')而不是你现在使用的。 我是React的新手,所以我可能会弄错,但值得一试。