我想在我的react client中有代理,我的package.json包含:
static void Main(string[] args){
StreamReader streamReader = new StreamReader("E:/Adventure Story/Intro.txt");
string intro = "";
string line;
while ((line = streamReader.ReadLine()) != null)
{
intro += line;
if(line == "")
{
intro += "\n\n";
}
}
WordWrap(intro);
public static void WordWrap(string paragraph)
{
paragraph = new Regex(@" {2,}").Replace(paragraph.Trim(), @" ");
var left = Console.CursorLeft; var top = Console.CursorTop; var lines = new List<string>();
for (var i = 0; paragraph.Length > 0; i++)
{
lines.Add(paragraph.Substring(0, Math.Min(Console.WindowWidth, paragraph.Length)));
var length = lines[i].LastIndexOf(" ", StringComparison.Ordinal);
if (length > 0) lines[i] = lines[i].Remove(length);
paragraph = paragraph.Substring(Math.Min(lines[i].Length + 1, paragraph.Length));
Console.SetCursorPosition(left, top + i); Console.WriteLine(lines[i]);
}
}
但是当我运行它时,我得到了错误
...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
},
...
我试图转换为字符串,没有错误,但是代理不起作用
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.
我的App.js
"proxy": "http://localhost:5000"
答案 0 :(得分:41)
您面临的问题是由于 CRA v2 。
首先,如果您仅在代理中使用纯字符串,则不需要任何其他配置。但是,当您使用对象时,就在使用高级配置。
因此,您必须遵循以下步骤:
通过键入npm i --save http-proxy-middleware
从package.json中删除条目:
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
}
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google',
{ target: 'http://localhost:5000/' }
));
}
有关更多信息,请检查this
答案 1 :(得分:22)
我认为这是“ create-react-app”问题。
您可以转到https://github.com/facebook/create-react-app/issues/5103 迁移到新的代理处理方法。
简而言之,您只需要安装一个名为“ http-proxy-middleware”的新库即可。
npm install http-proxy-middleware --save
然后创建一个新文件“ src / setupProxy.js”,然后键入
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google', { target: 'http://localhost:5000/' }));
};
希望这可以解决您的问题,祝您黑客愉快!
答案 2 :(得分:8)
首先,使用npm或Yarn安装http-proxy-middleware:
$ npm install http-proxy-middleware --save
$ # or
$ yarn add http-proxy-middleware
接下来,创建src / setupProxy.js并将以下内容放入其中:
const proxy = require('http-proxy-middleware')
module.exports = function(app) {
// ...
}
现在,一个一个地迁移代理对象中的每个条目,例如:
"proxy": {
"/api": {
"target": "http://localhost:5000/"
},
"/*.svg": {
"target": "http://localhost:5000/"
}
}
将条目放入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/' }))
}
您现在也可以在此处使用完全自定义的逻辑! 我从此链接获得了此工作回复,因此可以共享-https://github.com/facebook/create-react-app/issues/5103
答案 3 :(得分:5)
以下内容对我有用:
从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
));
}
重新启动服务器,您应该一切顺利。
答案 4 :(得分:4)
对于2020年的人来说,
通过在http-proxy-middleware
文件夹中键入npm i --save http-proxy-middleware
安装client
。
从package.json
中删除条目:
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
}
现在为您的代理创建一个安装文件。您应该在客户端的src文件夹中将其命名为setupProxy.js
,然后输入以下代码:
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
app.use(
createProxyMiddleware("/auth/google", { target: "http://localhost:5000/" })
);
};
PS:您无需在setupProxy.js
或server.js
中的任何地方包含index.js
。只需复制并粘贴。
答案 5 :(得分:1)
这对我有用(就像有几个人已经回答过一样)。但我写这个是为了以防有人问这是否仍然是 2021 年的有效答案。
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google',
{ target: 'http://localhost:5000/' }
));
当然,您的端口可以是任何东西。它不一定是 5000。无论您在何处运行后端服务。 这就对了。您不必在任何地方导入此文件。它按原样工作。
答案 6 :(得分:1)
此刻,我正在使用反应16.8.13 ,它工作正常:
1-从"proxy": {***}
文件中删除package.json
2-类型npm install http-proxy-middleware
3-创建文件src/setupProxy.js
4插入如下代码:
const {createProxyMiddleware} = require('http-proxy-middleware');
module.exports = (app) => {
app.use(
createProxyMiddleware('/endpoint/*', {
target: 'http://address/',
secure: false,
}),
);
};
答案 7 :(得分:1)
如果您需要代理请求并重写url,例如将localhost:3000/api/backend/some/method
改写为https://api-server.example.com/some/method
,则还需要使用pathRewrite
选项:
const {createProxyMiddleware} = require("http-proxy-middleware");
module.exports = function(app) {
app.use(
"/api/backend",
createProxyMiddleware({
target: "https://api-server.example.com",
changeOrigin: true,
pathRewrite: {
"^/api/backend": "",
},
})
);
};
答案 8 :(得分:0)
class Student (models.Model):
...
@property
def today_classes(self):
return self.classes.filter(classstudentmapping__days__contains=[str(datetime.today().weekday())])
# Usage:
student.today_classes # will return queryset
答案 9 :(得分:0)
这与create-react-app版本2中的错误有关。
只需运行
$ npm install react-scripts@next --save
$ # or
$ yarn add react-scripts@next
在以下位置找到答案
答案 10 :(得分:0)
...
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"proxy": {
"/auth/google": {
"target": "http://localhost:5000"
}
},
...
When specified, "proxy" in package.json must be a string.
Just change `"proxy": "http://localhost:5000"` and you are good to go.
If that doesn't solve the problem then register your proxy using **http-proxy-middleware**
$ npm install http-proxy-middleware --save
$ # or
$ yarn add http-proxy-middleware
Then create setypProxy.js file under src directory the put the following code.
const proxy = require('http-proxy-middleware');
module.exports = app => {
app.use(
proxy('/auth/google', {
target: 'http://localhost:5000'
})
);
app.use(
proxy('/auth/facebook', {
target: 'http://localhost:6000'
})
);
};
答案 11 :(得分:0)
https://github.com/facebook/create-react-app/issues/5103
将高级代理配置移动到src / setupProxy.js
只有在v1中使用了高级代理配置的个人才需要进行此更改。
要检查是否需要采取措施,请在package.json中查找代理密钥。然后,按照下表进行操作。
我在package.json中找不到代理密钥 无需采取任何措施! proxy的值是一个字符串(例如http://localhost:5000) 无需采取任何措施! 代理的值是一个对象 请遵循以下迁移说明。 如果您的代理是一个对象,则意味着您正在使用高级代理配置。
同样,如果您的代理字段是字符串,例如http://localhost:5000,您无需执行任何操作。仍然支持此功能,并且具有相同的行为。
首先,使用npm或Yarn安装http-proxy-middleware:
{
"name": "reactreduxboilerplate",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"server": "nodemon --watch server --exec babel-node -- server/server.dev.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"bootstrap": "^4.3.1",
"express": "^4.17.1",
"nodemon": "^1.19.1",
"react-hot-loader": "^4.12.0",
"react-redux": "^7.1.0",
"react-tradingview-widget": "^1.3.0",
"redux": "^4.0.1",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"webpack": "^4.35.0",
"webpack-dev-middleware": "^3.7.0",
"webpack-hot-middleware": "^2.25.0"
},
"dependencies": {
"axios": "^0.19.0",
"css-loader": "^3.0.0",
"file-loader": "^4.0.0",
"node-sass": "^4.12.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-router": "^5.0.1",
"react-router-dom": "^5.0.1",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1"
}
接下来,创建src / setupProxy.js并将以下内容放入其中:
$ npm install http-proxy-middleware --save
$ # or
$ yarn add http-proxy-middleware
现在,一个一个地迁移代理对象中的每个条目,例如:
const proxy = require('http-proxy-middleware')
module.exports = function(app) {
// ...
}
像这样将条目放入src / setupProxy.js:
"proxy": {
"/api": {
"target": "http://localhost:5000/"
},
"/*.svg": {
"target": "http://localhost:5000/"
}
}
您现在也可以在此处使用完全自定义的逻辑!这是不可能的。
成功了。
答案 12 :(得分:0)
在我的情况下,我不需要 src / setupProxy.js ... 我使用axios ... Check About Axios Proxy
检查节点库是否有:http-proxy-middleware是可选的,我不需要它!
只需尝试重新启动服务器端就可以了! 添加检查:
class OrdersController < ApplicationController
before_action :authenticate_user!, :except => [:show]
答案 13 :(得分:0)
将代理更改为类似的内容,并希望它对我有用。
答案 14 :(得分:0)
在src文件夹中创建一个setupProxy.js文件,然后复制并粘贴以下代码。
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
app.use(
createProxyMiddleware("/auth/google", {
target: "http://localhost:5000/",
})
);
};
答案 15 :(得分:0)
将“ http-proxy-middleware”安装到客户端中,而不是“不在服务器内部”。
在client / src /目录中添加setupProxy.js。 (应该是这样:client / src / setupProxy.js)
在其中添加以下几行。
const proxy = require("http-proxy-middleware");
module.exports = app => {
app.use(proxy("/auth/google", { target: "http://localhost:5000/" }));
};
就是这样,进入您的Google开发人员控制台,然后将localhost:3000 / auth / google / callback添加到您的项目中。
答案 16 :(得分:0)
在客户端(React app)中创建一个名为
src/setupProxy.js
确保重新启动服务器。由于您正在处理源目录之外的文件,因此package.json文件需要重新启动。