Я пытаюсь скрыть свой API-ключ на тот момент, когда я фиксируюсь на github, и я просмотрел форум для руководства, особенно следующий пост:
Как скрыть ключ API в приложении create-response-app?
Я внес изменения и перезапустил пряжу. Я не уверен, что делаю неправильно - я добавил .env
файл в корень своего проекта (я назвал его process.env
) и в файл, который только что поместил REACT_APP_API_KEY = 'my-secret-api-key'
.
Я думаю, что это может быть способ добавления ключа к my fetch
в App.js, и я пробовал несколько форматов, в том числе без использования литерала шаблона, но мой проект все равно не компилируется.
Буду признателен за любую оказанную помощь.
performSearch = (query = 'germany') => {
fetch(`https://api.unsplash.com/search/photos?query=${query}&client_id=${REACT_APP_API_KEY}`)
.then(response => response.json())
.then(responseData => {
this.setState({
results: responseData.results,
loading: false
});
})
.catch(error => {
console.log('Error fetching and parsing data', error);
});
}
reactjs
environment-variables
api-key
Бьянка М
источник
источник
process.env
называть его.env.local or .env.process
и хранить вне каталога srcnpm run start
.WARNING: Do not store any secrets (such as private API keys) in your React app! Environment variables are embedded into the build, meaning anyone can view them by inspecting your app's files.
Ответы:
4 шага
npm install dotenv --save
Затем добавьте следующую строку в свое приложение.
require('dotenv').config()
Затем создайте
.env
файл в корневом каталоге вашего приложения и добавьте в него переменные.// contents of .env REACT_APP_API_KEY = 'my-secret-api-key'
.env
в свой.gitignore
файл, чтобы Git игнорировал его и никогда не попадал на GitHub.Если вы используете приложение create-react-app, вам нужны только шаги 3 и 4, но имейте в виду, что переменная должна начинаться с того,
REACT_APP_
чтобы она работала.Ссылка: https://create-react-app.dev/docs/adding-custom-environment-variables/
Примечание - Необходимость перезагрузки приложения после добавления переменной в .env файле.
Ссылка - https://medium.com/@thejasonfile/using-dotenv-package-to-create-environment-variables-33da4ac4ea8f
источник
require('dotenv').config()
? какой файл?.env.example
файл, в котором выложены определения ключей env. Затем вы можете скопировать.env.example
и создать.env
файл (в стадии разработки и производства), содержащий действительные значения, например, ключи, базовые URL-адреса и т. Д. Вы должны добавить.env
файл в.gitignore
.Так что я новичок в React и нашел способ сделать это.
Это решение не требует дополнительных пакетов.
Шаг 1 ReactDocs
В приведенных выше документах упоминается экспорт в оболочке и другие параметры, которые я попытаюсь объяснить, это использование файла .env.
1.1 создать Root / .env
Важные примечания, он ДОЛЖЕН начинаться с REACT_APP_
1.2 Доступ к переменной ENV
#App.js file or the file you need to access ENV <p>print env secret to HTML</p> <pre>{process.env.REACT_APP_SECRET_NAME}</pre> handleFetchData() { // access in API call fetch(`https://awesome.api.io?api-key=${process.env.REACT_APP_SECRET_NAME}`) .then((res) => res.json()) .then((data) => console.log(data)) }
1.3 Проблема со сборкой Env
Итак, после того, как я сделал шаг 1.1 | 2, он не работал, тогда я обнаружил вышеуказанную проблему / решение. React читает / создает env, когда он собран, поэтому вам нужно запускать npm run start каждый раз, когда вы изменяете файл .env, чтобы переменные обновлялись.
источник
REACT_APP_
спасибо. Никто об этом не упомянул.undefined
undefined
, перезапустили ли вы приложение после добавления новой переменной в .env, см. 1.3process.env.REACT_APP_API_KEY
говоритundefined
.Сегодня есть более простой способ сделать это.
Просто создайте файл .env.local в корневом каталоге и установите там переменные. В твоем случае:
REACT_APP_API_KEY = 'my-secret-api-key'
Затем вы вызываете его в своем js-файле таким образом:
React поддерживает переменные среды, так как response-scripts@0.5.0. Для этого вам не нужен внешний пакет.
https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-development-environment-variables-in-env
* примечание: я предлагаю .env.local вместо .env, потому что приложение create-response-app добавляет этот файл в gitignore при создании проекта.
Приоритет файлов:
npm start: .env.development.local, .env.development, .env.local, .env
npm run build: .env.production.local, .env.production, .env.local, .env
npm test: .env.test.local, .env.test, .env (примечание .env.local отсутствует)
Подробнее: https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables
источник
Пользователи Webpack
Если вы используете webpack, вы можете установить и использовать
dotenv-webpack
плагин, для этого выполните следующие действия:Установить пакет
Создать
.env
файл// .env API_KEY='my secret api key'
Добавить в
webpack.config.js
файл// webpack.config.js const Dotenv = require('dotenv-webpack'); module.exports = { ... plugins: [ new Dotenv() ] ... };
Используйте его в своем коде как
Для получения дополнительной информации и информации о конфигурации посетите здесь
источник
1. Создайте файл .env в корневой папке.
некоторые источники предпочитают использовать
.env.development
и ,.env.production
но это не обязательно.2. Имя вашей ПЕРЕМЕННОЙ -должно- начинаться с REACT_APP_YOURVARIABLENAME.
кажется, что если ваша переменная среды не запускается таким образом, у вас будут проблемы
3. Включите вашу переменную
чтобы включить переменную среды, просто добавьте свой код
process.env.REACT_APP_VARIABLE
источник
console.log('process', process.env.REACT_APP_BASE_URL);
Вам необходимо установить npm install env-cmd
Сделайте .env в корневом каталоге и обновите его следующим образом. & REACT_APP_ - обязательный префикс для имени переменной.
REACT_APP_NODE_ENV="production" REACT_APP_DB="http://localhost:5000"
Обновить package.json
"scripts": { "start": "env-cmd react-scripts start", "build": "env-cmd react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }
источник
dotenv
как devDependencies:.env
файл в корневом каталоге:.env
файл, как показано ниже, и REACT_APP_ - обязательный префикс для имени переменной.REACT_APP_BASE_URL=http://localhost:8000 REACT_APP_API_KEY=YOUR-API-KEY
Например, я создал файл с именем
base.js
и обновил его, как показано ниже:export const BASE_URL = process.env.REACT_APP_BASE_URL; export const API_KEY = process.env.REACT_APP_API_KEY;
источник
.env
файла? Им известны нам нужно создавать.env.development
и.env.prod
файлы, но как мы различаем между ними , используя свой метод?.env
файл в нашем.gitignore
. Итак, при развертывании мы просто копируем.env
файл на наш сервер и просто меняем BASE_URL и другие необходимые значения. Таким образом, когда ему нужно развернуть последний код, мы просто извлекаем из мастера git и развертываем его. Мы не думаем об этом,.env
поскольку игнорируем его и устанавливаем на нашем сервере в самом начале. Благодаря!REACT_APP_BASE_URL
в файле .env?Если вы получаете значения как
undefined
, то вам следует рассмотреть возможность перезапуска сервера узла и повторной компиляции.источник