【问题标题】:Set up proxy server for create react app为创建反应应用程序设置代理服务器
【发布时间】:2017-03-21 00:34:41
【问题描述】:

我已经使用create-react-app 启动了一个反应应用程序并运行npm run eject 脚本来访问所有文件。之后我安装了 express 并创建了与 package.json 文件位于同一级别的 server.js 文件

这些是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。

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

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

【问题讨论】:

    标签: javascript node.js express reactjs create-react-app


    【解决方案1】:

    您不必弹出来运行您的 server.js。您可以使用node server.jscreate-react-app 一起运行它。

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

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

    【讨论】:

    • 如何使用这样的代理确定请求客户端的 IP 地址?使用 express,req.ip 只给了我本地主机 ip
    • @jpdelatorre 您的回答很棒,可以挽救生命。你知道如何在不使用create-react-app 的情况下设置相同的选项吗,我的意思是从头开始
    • 这个解决方案对我仍然不起作用。当我运行 npm run start 时,它仍然使用运行反应应用程序的 localhost:3000。我知道 PR 有点大,但我已经编辑了 package.json 以匹配它,就像你在 react-uI/package.json github.com/moon-room/log/pull/1 下描述的那样,你还有什么想法我做错了吗?跨度>
    • 从 react 应用构建最终脚本后如何更改代理值?可以配置吗?
    • 确保您的 api 服务器中有正确的路由。我忘记了“api/auth”前面的“/”。否则,更改您的“package.json”就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多