如何在 CRA v2 中将代理值从 package.json 移动到 setupProxy.js?

How to move a proxy value from package.json to setupProxy.js in CRA v2?

自从最近发布 CRA(Create React App)v2 以来,现在可以将代理设置从 package.json 移动到 setupProxy.js。我的问题很简单:如果我只想始终使用 http://127.0.0.1:5000,我的 setupProxy.js 应该是什么样子?我需要这个,因为如果一切正常(到目前为止运气不好),我可以用 dev/prod 环境的 .env 文件中的变量替换它。 但到目前为止我只得到 a 或 b:

a) CORS 错误

b) 我的应用 index.html 作为 http 请求的结果被返回

这是我试过的 setupProxy.js 版本之一的示例:

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
  app.use('/', proxy({target: 'http://127.0.0.1:5000', changeOrigin: true}));
  app.use('/*', proxy({target: 'http://127.0.0.1:5000', changeOrigin: true}));
  app.use(proxy({'/', target: 'http://127.0.0.1:5000', changeOrigin: true}));
  app.use(proxy({'/*', target: 'http://127.0.0.1:5000', changeOrigin: true}));
};

我尝试了 app.use 行的各种版本,我只是在这里发布了几个示例。

我通常一次尝试使用一行 app.use 行,但也尝试使用多行。

每次更改文件后,我都会重新启动 React 应用程序。

我也尝试使用 process.env.REACT_APP_BACKEND_BASEURL 而不是 'http://127.0.0.1:5000' 这是我的最终目标。

所以试试

app.use(proxy('/**', { target:'http://127.0.0.1:5000', changeOrigin: true }))

如果我没记错的话,使用 setupProxy.js 只对本地开发有好处,但我也需要它在 live/deployed 服务器上工作,所以我最终没有使用 setupProxy.js - 我将不同的后端 URL 作为 REACT_APP_BACKEND_BASEURL 变量保存在不同的 .env 文件中(loclahost url 在 .env.development 文件中,远程 url 在 .env.production 文件)并替换了前端 JavaScript 代码中所有出现的地方以使用 process.env.REACT_APP_BACKEND_BASEURL.