我正在使用3 .env文件,如.env.prod、.env.dev和.env。但不能把网址拿来给我的组件。
我用的是react 16.9。
你能帮我把它拿回来吗?
在我的.env / .env.dev文件
loginUrl = = "http://localhost:8080/api/2.0/admin/auth/login"
在我的package.json文件
"scripts": {
"start": "cp ./.env.dev .env && react-scripts start",
"build:dev": "cp ./.env.dev .env && react-scripts build",
"build:stage": "cp ./.env.stage .env && react-scripts build",
"build:prod": "cp ./.env.prod .env && react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},```
Inside my component, when I am printing it it is giving undefined.
console.log(process.env.loginUrl) is giving undefined
发布于 2019-10-18 21:59:17
使用react脚本
查看响应脚本添加自定义环境变量文档,如果以下情况,变量将自动从.env
加载:
注意:您必须创建以REACT_APP_开头的自定义环境变量。除NODE_ENV之外的任何其他变量都将被忽略,以避免意外暴露可能具有相同名称的机器上的私钥。如果开发服务器正在运行,更改任何环境变量都需要重新启动它。
类似问题的接缝来自变量的名称,请尝试在REACT_APP_LOGIN_URL
中重命名
注意:这个特性可以与react脚本@0.5.0及更高版本一起使用。
如果用Webpack代替反应脚本
您需要使用webpack DefinePlugin在代码中注入环境变量。
在您的webpack.config.js
文件中:
require("dotenv").config(); // will load .env file in process.env
const webpack = require("webpack");
...
plugins: [
...
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production"),
SENTRY_DSN: JSON.stringify(process.env.SENTRY_DSN),
BUILD_DATE: JSON.stringify(new Date()),
TRAVIS_COMMIT: JSON.stringify(process.env.TRAVIS_COMMIT)
}
}),
...
]
确保只具有字符串,就好像该值不是字符串一样,它将被字符串化(包括函数)。
然后在代码中,您可以调用console.log(process.env.NODE_ENV)
https://stackoverflow.com/questions/58460913
复制相似问题