Javascript 环境变量反应
我有一个react组件,它在开发中会重定向到本地主机url,但在生产中会重定向到不同的url。在我的后端,我也遇到了同样的情况,我用一个名为dotenv的包解决了这个问题。我想知道有人会如何在前端做到这一点Javascript 环境变量反应,javascript,reactjs,Javascript,Reactjs,我有一个react组件,它在开发中会重定向到本地主机url,但在生产中会重定向到不同的url。在我的后端,我也遇到了同样的情况,我用一个名为dotenv的包解决了这个问题。我想知道有人会如何在前端做到这一点 export default withRouter(function Login(props) { useEffect(() => { if(localStorage.getItem('jwt')){ props.history.pus
export default withRouter(function Login(props) {
useEffect(() => {
if(localStorage.getItem('jwt')){
props.history.push('/dashboard');
}
})
const handleLogin = () => {
window.location.href = "http://localhost:8000/auth/google";
}
return (
<LoginView handleLogin={handleLogin}/>
)
})
使用路由器导出默认值(功能登录(道具){
useffect(()=>{
if(localStorage.getItem('jwt')){
props.history.push('/dashboard');
}
})
常量handleLogin=()=>{
window.location.href=”http://localhost:8000/auth/google";
}
返回(
)
})
您也可以使用dotenv添加环境变量进行响应。在应用程序部署期间(在构建过程中),必须用相应的URL替换环境变量(因为这是前端应用程序中最常见的用例)。这可以在配置构建过程时完成
下面是一个使用Webpack的示例
这里的整个想法是创建一个文件(称为just.env),其中包含
您的环境变量。防止人们发现你的
本地数据库密码与您为每个数据库使用的密码相同
对于您在internet上的帐户,我建议您将.env文件添加到
你的,别理我。您的前端代码将引用相同的代码
两个环境上的环境变量(process.env.API_URL)
(开发/生产),但因为您在
在.env文件中,编译的值将不同
我建议为react应用程序提供一个单独的.env文件,因为它不应该意外地与网站一起提供
Create React App有一个模块(围绕节点dotenv模块构建),可用于添加自定义环境变量
环境变量在构建期间嵌入。自从
CreateReact应用程序生成一个静态HTML/CSS/JS包,它不能
可能在运行时读取它们。要在运行时读取它们,您需要
将HTML加载到服务器上的内存中并替换中的占位符
运行时,如下所述。或者,您可以在上重建应用程序
只要你改变它们,服务器就会自动关闭
这取决于你如何使用react 如果您使用的是react脚本,则可以转到上面的解决方案() 但如果您使用的是webpack,请尝试使用DotenvPlugin代替dotenvmodule()
在我看来,请不要遵循方法1在媒体链接中的使用,因为不应该在git上推送env,但需要做package.json。是否重定向从后端服务返回的url?我认为可以通过进行一些webpack配置来实现,有一个npm包,这两个url完全不同,还是只改变了域?为什么不使用相对路径?或根
/
的绝对路径,而不指定域。我不太喜欢在运行时代码中使用“开发vs.生产”逻辑。你从哪里重定向?它是否是您重定向到的另一个主机(在开发和生产中?)要添加到此答案以及URL和创建react应用程序的特定用例,您还可以在您的package.json中设置proxy
属性,如本文所述