我正在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服务器通信。
注意:请求使用GET,但我正在尝试执行POST请求,此错误只出现在POST中。
编辑:这是Express的部分配置文件:
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
app.use('/', indexRouter);
app.use('/users', usersRouter);
答案 0 :(得分:0)
默认情况下,当React无法在代理(localhost:3001)上找到提供的路由时,会将您重定向到端口3000。 我想你应该使用axios.post('/ api / users')而不是你现在使用的。 我是React的新手,所以我可能会弄错,但值得一试。