我想在我的react客户端中有代理,我的package.json包含:
...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
},
...
Run Code Online (Sandbox Code Playgroud)
但是当我跑它时,我得到了错误
When specified, "proxy" in package.json must be a string.
[1] Instead, the type of "proxy" was "object".
[1] Either remove "proxy" from package.json, or make it a string.
Run Code Online (Sandbox Code Playgroud)
我试图转换为字符串,没有错误,但代理不起作用
"proxy": "http://localhost:5000"
Run Code Online (Sandbox Code Playgroud)
我的App.js
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>hey there</p>
<a href="/auth/google">Sign In With Google</a>
</header>
</div>
Run Code Online (Sandbox Code Playgroud)
Roh*_*har 50
您面临的问题是CRA v2.
首先,如果您只是在代理中使用纯字符串,则不需要任何其他配置.但是,当您使用对象时,您正在使用高级配置.
因此,您必须按照下面列出的步骤操作:
通过键入来安装http-proxy-middleware npm i --save http-proxy-middleware
从package.json中删除条目:
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
}
Run Code Online (Sandbox Code Playgroud)
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google',
{ target: 'http://localhost:5000/' }
));
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请检查此
Vin*_* Ho 25
我认为这是"create-react-app"问题.
您可以访问https://github.com/facebook/create-react-app/issues/5103 迁移到新的代理处理方法.
简而言之,您只需要安装一个名为"http-proxy-middleware"的新库.
npm install http-proxy-middleware --save
Run Code Online (Sandbox Code Playgroud)
然后创建一个新文件"src/setupProxy.js",然后键入
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google', { target: 'http://localhost:5000/' }));
};
Run Code Online (Sandbox Code Playgroud)
希望这可以解决你的问题,快乐的黑客攻击!
小智 10
首先,使用npm或Yarn安装http-proxy-middleware:
$ npm install http-proxy-middleware --save
$ # or
$ yarn add http-proxy-middleware
Run Code Online (Sandbox Code Playgroud)
接下来,创建src/setupProxy.js并将以下内容放入其中:
const proxy = require('http-proxy-middleware')
module.exports = function(app) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,逐个迁移代理对象中的每个条目,例如:
"proxy": {
"/api": {
"target": "http://localhost:5000/"
},
"/*.svg": {
"target": "http://localhost:5000/"
}
}
Run Code Online (Sandbox Code Playgroud)
将条目放入src/setupProxy.js如下:
const proxy = require('http-proxy-middleware')
module.exports = function(app) {
app.use(proxy('/api', { target: 'http://localhost:5000/' }))
app.use(proxy('/*.svg', { target: 'http://localhost:5000/' }))
}
Run Code Online (Sandbox Code Playgroud)
您现在也可以使用完全自定义逻辑!我从这个链接获得了这个工作响应,因此分享 - https://github.com/facebook/create-react-app/issues/5103
对于 2020 年的人,请http-proxy-middleware通过npm i --save http-proxy-middleware在client文件夹内键入来安装。
从 中删除条目package.json:
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
}
Run Code Online (Sandbox Code Playgroud)
现在为您的代理创建一个安装文件。您应该setupProxy.js在客户端的 src 文件夹中将其命名并键入以下代码:
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
app.use(
createProxyMiddleware("/auth/google", { target: "http://localhost:5000/" })
);
};
Run Code Online (Sandbox Code Playgroud)
PS:您不需要setupProxy.js在server.js或 中包含任何地方index.js。只需复制和粘贴。
以下对我有用:
从 package.json 中删除“代理”。
在客户端目录中安装“http-proxy-middleware”。为此,请 cd 进入客户端目录并运行“npm i --save http-proxy-middleware”。然后,在客户端的 src 目录中创建一个名为“setupProxy.js”的新文件。将以下代码放入此文件中:
const { createProxyMiddleware } = require('http-proxy-middleware');
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(createProxyMiddleware('/api/', // replace with your endpoint
{ target: 'http://localhost:8000' } // replace with your target
));
}
Run Code Online (Sandbox Code Playgroud)
重新启动服务器,你应该很高兴。
| 归档时间: |
|
| 查看次数: |
20570 次 |
| 最近记录: |