我在create-react-app中使用了以下环境变量:
console.log(process.env.REACT_APP_API_URL) // http://localhost:5555
当我通过阅读.env
文件来运行npm start
时,它可以工作:
REACT_APP_API_URL=http://localhost:5555
如何在执行npm run build
时设置不同的值(如http://localhost:1234
)?
这是我的package.json
文件:
{
"name": "webapp",
"version": "0.1.0",
"private": true,
"devDependencies": {
"react-scripts": "0.9.0"
},
"dependencies": {
"react": "^15.4.2",
"react-dom": "^15.4.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
6条答案
按热度按时间oxosxuxt1#
我想您现在已经可以使用它了,但是对于发现它的其他人,您可以在“create-react-app”项目根目录下的
.env
文件中设置默认环境变量。要将使用
npm start
和npm run build
时使用的变量分开,您可以再创建两个env文件-.env.development
和.env.production
。npm start
会将REACT_APP_NODE_ENV
设置为development
,因此它会自动使用.env.development
文件,而npm run build
会将REACT_APP_NODE_ENV
设置为production
,因此它会自动使用.env.production
。在这些文件中设置的值将覆盖您的.env
中的值。如果您与其他人一起工作,并且只有特定于您的计算机的值,则可以通过将
.env.development
和.env.production
中的值分别添加到新文件(.env.development.local
和.env.production.local
)来覆盖这些值。**EDIT:**我应该指出,您设置的环境变量必须以“REACT_APP_"开头,例如“REACT_APP_MY_ENV_VALUE”。
**EDIT 2:**如果您需要的不仅仅是开发和生产,请使用env-cmd,正如此注解所指定的那样。
4smxwvx52#
您可以像这样使用
process.env.NODE_ENV
:您需要设置
REACT_APP_PROD_API_URL
和REACT_APP_DEV_API_URL
。或者,如果生产URL始终相同,则可以对其进行简化:
Create React App会在构建时为您将
NODE_ENV
设置为“生产”,因此您无需担心何时将其设置为生产。**注意:**必须重新启动服务器(例如,再次运行
npm start
)以检测环境变量更改.dffbzjpn3#
如果您希望使用单独的dotenv文件来构建和/或部署到单独的环境(stage、prod),则可以使用env-cmd,如下所示:
然后相应地更新您的
package.json
:然后运行以下shell命令进行构建:
gcmastyq4#
此外,它可以在没有其他依赖项的情况下完成:
并有相应的
.env.staging
、.env.production
文件fhg3lkii5#
安装“env-cmd”软件包
在本地,如果要运行qa环境,请使用npm run start:qa
vyu0f0g16#
如果您使用Heroku进行部署,请执行以下操作: