我有一个react应用程序,并使用dotenv-webpack来管理我的API密钥。
我已经:-用API密钥创建了一个.env并将其gitignored. - required并将dotenv作为插件添加到webpack.config.js中。
在那之后,我已经能够通过使用process.env.API_key引用.js文件中的一个键了。但是我试图在index.html的script标签中引用它时遇到了问题。
index.html:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/style/style.css">
<link rel="stylesheet" href="https://cdn.rawgit.com/twbs/bootstrap/48938155eb24b4ccdde09426066869504c6dab3c/dist/css/bootstrap.min.css">
<script src="https://maps.googleapis.com/maps/api/js?key=process.env.GOOGLEMAP_API_KEY"></script>
</head>
<body>
<div class="container"></div>
</body>
<script src="/bundle.js"></script>
</html>
如何在这里引用process.env.API_key?
<script src="https://maps.googleapis.com/maps/api/js?key=[API_KEY]"></script>
我试过在.js文件中使用反引号,比如${API_KEY}
,但在.html文件中不起作用。
5条答案
按热度按时间rseugnpd1#
如果您已经在使用create-react-app,那么通过更新到
就像文档里说的
您还可以访问public/index.html中以REACT_APP_开头的环境变量。
yyhrrdl82#
溶液
不能直接在
html
中引用process.env
变量。从
index.html
创建您自己的模板,并使用参数替换API url。HtmlWebpackPlugin
简化HTML文件的创建以服务于您的webpack包。
你可以让插件为你生成一个HTML文件,使用lodash模板提供你自己的模板,或者使用你自己的加载器。
Webpack.config.js
HtmlWebpackPlugin允许您创建参数并将其传递到模板:
template.html
在模板内部,您可以访问参数:
请参阅:编写自己的模板
注意事项
这是一个修改后的答案,从这个评论,请阅读完整的对话。
von4xj4u3#
你可以用简单的方法
在HTML中
在脚本中
vddsk6oq4#
我把下面的代码放在componentWillMount中,在那里Map渲染和它工作(至少在开发中:const API_KEY = process.env.GOOGLEMAP_API_KEY;const script = document.createElement('script');script.src = https://maps.googleapis.com/maps/api/js?key= ${API_KEY};document.head.append(script);
我可以使用bigmugcup在上面的评论中发布的代码来实现这一点。我没有修改webpack.config.js文件。
kuarbcqp5#
我一直在寻找如何有条件地设置属性值的问题,几分钟后,我实际上找到了一种处理这种情况的方法,我在下面列出。它由HtmlWebpackPlugin处理。这个片段也将帮助您在HTML文件中引用环境变量。
环境设置
环境变量定义
我在Package.json文件.的scripts属性中设置环境变量[APP_ENV],如下所示
引用HTML文件变量