我设置的代理有问题。
这是我的根 package.json 文件:
"scripts": {
"client": "cd client && yarn dev-server",
"server": "nodemon server.js",
"dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\""
}
Run Code Online (Sandbox Code Playgroud)
我的客户端 package.json 文件:
"scripts": {
"serve": "live-server public/",
"build": "webpack",
"dev-server": "webpack-dev-server"
},
"proxy": "http://localhost:5000/"
Run Code Online (Sandbox Code Playgroud)
我已经在我的服务器端设置了 express 在端口 5000 上运行。每当我向服务器发出请求时,即:
callApi = async () => {
const response = await fetch('/api/hello');
const body = await response.json();
// ... more stuff
}
Run Code Online (Sandbox Code Playgroud)
请求总是转到
有人可以指出我必须做些什么来解决这个问题,以便请求实际上转到端口 5000?
我使用过 Express,但对 React 还很陌生。我已经将 React 连接到一个可以工作的 Express 服务器,但在进入fetch('/')我的主要 React App 组件以命中 Express 应用程序中的索引路由时遇到问题。例如我在 Express 中有这些路线:
app.use('/', routes);
app.use('/users', users);
Run Code Online (Sandbox Code Playgroud)
Express 中的两条路线相同。他们对 MongoDB 进行了简单的调用,响应是res.json(data)。此外,当我在 Express 端口上纯粹测试这些路由时,它们都工作正常。
下面是我的 React 组件。问题是当我尝试使用Express 中的fetch('/')相应内容时app.use('/', routes);它不起作用。如果我把它改成fetch('/users')它就可以了。
import React, { Component } from 'react';
import './App.css';
class App extends Component {
state = {users: []}
componentDidMount() {
fetch('/') // this route doesn't work with Express!
.then(res => res.json())
.then(users => this.setState({ users }));
}
render() {
return …Run Code Online (Sandbox Code Playgroud) 我有一个 create-react-app 应用程序,我通过添加以下内容启用了代理:
"proxy": "http://localhost:3001",
Run Code Online (Sandbox Code Playgroud)
到我的 package.json。这适用于对 /graphql 的 API 请求,但是当 Web 浏览器请求 /graphql(用于加载 UI 以运行查询)由前端处理而不是代理时。是否也可以代理它?
当我尝试通过访问https://localhost:3000/auth/facebook进行 OAuth 时,会发生同样的事情,前端处理它而不是后端。