为创建 React 应用程序设置代理服务器

Set up proxy server for create react app

我已经使用 create-react-app 和 运行 以及 npm run eject 脚本启动了一个 React 应用程序,以获取对所有文件的访问权限。之后我安装了 express 并创建了 server.js 文件,该文件与 package.json 文件

处于同一级别

这些是 server.js 文件内容:

const express = require('express');
const app = express;

app.set('port', 3031);

if(process.env.NODE_ENV === 'production') {
  app.use(express.static('build'));
}

app.listen(app.get('port'), () => {
  console.log(`Server started at: http://localhost:${app.get('port')}/`);
})

这里没什么特别的,只是为将来需要使用机密的 api 代理设置,因为我不想暴露我的 api。

之后,我在 package.json 文件中添加了 "proxy": "http://localhost:3001/"。我现在陷入困境,因为我需要弄清楚如何正确启动我的服务器并在开发模式下使用此 server.js 文件,然后在生产模式下使用。

理想情况下,如果我们可以使用多个代理也很好,即 /api/api2

您不必将您的 server.js 弹出到 运行。你可以 运行 它与 node server.js 一起 create-react-app.

即使在弹出以启动您的开发服务器后,您仍然可以 npm start

至运行 /api1/api2,您只需在server.js 文件中处理它,它应该可以正常工作。您需要匹配 server.js 中的 portpackage.jsonproxy 设置中的 port - 在这种情况下,它应该是 "proxy": "http://localhost:3031"