如何设置环境变量以响应脚本

时间:2020-08-11 17:19:04

标签: node.js reactjs npm

我正在构建一个具有后端和前端的项目。 我的想法是将两个文件夹都放在同一个目录下,再用另一个运行它们的npm脚本来存储。

问题是我无法在作为前端的两个软件包之一中设置端口。

在我的主package.json中,我有这个:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start-app": "cross-env SERVER_PORT=8080 npm start --prefix ./frontend",
    "start-server": "cross-env SERVER_PORT=8080 npm start --prefix ./backend"
  },

它适用于后端,但不适用于前端。

前端具有基本配置。

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  }

该项目正在运行,但是当我寻找process.env时,前端没有SERVER_PORT的踪迹,但在后端却存在。

(后端脚本是新npm软件包的默认脚本)。

"scripts": {
    "start": "node main.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

1 个答案:

答案 0 :(得分:1)

CRA使用PORT定义端口变量。像这样运行它:

 "start": “PORT=8000 react-scripts start"

此外,由于CRA本质上是一个静态站点,因此它本身没有env变量的概念-这些是NodeJS特定的。为您定义了诸如PORT和NDOE_ENV之类的东西,并在开发服务器中使用了它们。如果您想在React组件中使用自定义环境变量,则可以通过定义前缀REACT_APP_(例如REACT_APP_SITENAME)使它们可用。

在此处查看文档:{​​{3}}