Как передать среду varialbes в веб-расширение
Я хочу создать веб-расширение, которое использует некоторые сервисы AWS, и я не хочу загружать ключи API в git, однако я не могу передать свои ключи API обычным способом. Например:
Если я запускаю команду IDENTITY_POOL_ID=<id_pool_id> web-ext run
Я обычно ожидаю, что переменная будет доступна в process.env.IDENTITY_POOL_ID
, тем не мение, process.env
пустой.
Я также попытался добавить файл.env в корень каталога с расширением web.
0 ответов
Поскольку расширение работает "на стороне клиента" process.env
не доступен. Расширение, работающее в браузере, не имеет доступа к переменным среды. Вместо этого в этом случае вы хотите, чтобы расширение использовалоbrowser.storage
и попросите пользователя (возможно, вы) установить значение при установке расширения на странице параметров.
например, вот options.js
файл;
function saveOptions(e) {
var api_key = document.querySelector("#api_key").value
browser.storage.local.set({"api_key": api_key}).then(restoreOptions)
e.preventDefault();
}
function restoreOptions() {
browser.storage.local.get("api_key").then(function(data) {
if (typeof data['api_key'] != 'undefined') {
var api_key = data['api_key']
document.querySelector("#api_key").value = api_key
}
})
}
document.addEventListener('DOMContentLoaded', restoreOptions)
document.querySelector("form").addEventListener("submit", saveOptions)
А вот и соответствующий options.html
;
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Options</titlE>
<meta charset="utf-8">
</head>
<body>
<form>
<label for="api_key">API Key:</label>
<input type="text" id="api_key">
<button type="submit">Save</button>
</form>
<script src="options.js"></script>
</body>
</html>