【发布时间】:2021-01-11 20:42:49
【问题描述】:
我正在开发一个从节点端点为 create-react-app 提供服务的 repo。因此,react 应用嵌套为子目录:
.
├── Procfile
├── frontend
│ ├── README.md
│ ├── build
│ ├── package.json <---- "proxy": "http://localhost:$PORT"
│ ├── public
│ ├── src
│ │ ├── App.css
│ │ ├── App.js
│ │ └── // etc...
│ └── .env <----- frontend env file, removed PORT value from here
├── package.json
├── src
│ ├── app.js
│ ├── server.js
│ └── // etc...
├── .env <--- backend env file, PORT=9000 for node
├── static.json
└── yarn.lock
从 .env 文件中删除端口值后,CRA 在端口 3000 上运行。如果我硬编码端口 9000 而不是 $PORT,则代理在开发中正常工作。
但是,在部署到生产环境时,我希望前端代理 Heroku 的动态端口号,这是一个示例:
Heroku 似乎忽略了端口值,即使我故意在他们网站的 env 中定义它,值为 9000。
我的问题是如何在前端定义代理而不让 CRA 在该端口号上实例化,例如在前端 .env 中应用 PORT=9000,但在端口 3000 处加载 CRA。
我尝试在脚本中定义端口号,同时确保我在前端环境中定义了 PORT=9000:
"scripts": {
"start": "export PORT=3000 && react-scripts start",
【问题讨论】:
-
您不想让 Node 服务器在同一个端口上为您的 React 应用程序提供服务,以避免前端和后端之间出现跨域问题吗?
标签: heroku environment-variables port create-react-app