Могу ли я использовать переменные среды сборки в Netlify с помощью Create-React-App?

Как использовать переменные среды сборки в Netlify с помощью Create-React-App?

Простой поиск в Google дал это: netlify.com/docs/continuous-deployment/…

Sal 27.09.2018 22:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
1
10 374
2

Ответы 2

Вы ЖЕСТЯНАЯ БАНКА используете переменные среды в вашем create-react-app на Netlify, но все ограничения сборки приложения Create React по-прежнему будут применяться.

  • По умолчанию для вас будет определен NODE_ENV
  • Будут доступны любые другие переменные среды, начиная с REACT_APP_.
  • Любые другие переменные, кроме NODE_ENV, будут проигнорированы.
  • Изменение любых переменных среды потребует от вас запуска новой сборки / развертывания.

ВАЖНАЯ ЗАМЕТКА: Никакие переменные среды не могут быть доступны из create-react-app динамически из браузера, размещенного на Netlify! Чтобы использовать их на статическом сайте, к ним необходимо получить доступ во время сборки.


Из пример репо create-react-app, размещенного на Netlify:

App.js

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className = "App">
        <header className = "App-header">
          <img src = {logo} className = "App-logo" alt = "logo" />
          <h1 className = "App-title">Environment Variables in a Create React App on Netlify</h1>
        </header>
        <p className = "App-intro">
          To get started, edit <code>src/App.js</code> and commit to your repo.
        </p>
        <p>NODE_ENV value is "{process.env.NODE_ENV}"</p>
        <p>CUSTOM_ENV_VAR value is "{process.env.CUSTOM_ENV_VAR}"</p>
        <p>REACT_APP_CUSTOM_ENV_VAR value is "{process.env.REACT_APP_CUSTOM_ENV_VAR}"</p>
        <p>TOML_ENV_VAR value is "{process.env.TOML_ENV_VAR}"</p>
        <p>REACT_APP_TOML_ENV_VAR value is "{process.env.REACT_APP_TOML_ENV_VAR}"</p>
      </div>
    );
  }
}

export default App;

На https://netlify-cra-env-vars.netlify.com/ производит следующее:

Установка переменных среды в настройках сайта на Netlify.com

В app.netlify.comCUSTOM_ENV_VAR и REACT_APP_CUSTOM_ENV_VAR были установлены следующим образом:

Установка переменных среды в netlify.toml

Переменные среды netlify.toml были установлены как:

[build]
  command = "yarn build"
  publish = "build"

[context.production.environment]
  TOML_ENV_VAR = "From netlify.toml"
  REACT_APP_TOML_ENV_VAR = "From netlify.toml (REACT_APP_)"

[Дополнительный] Установка переменных окружения в .env

Вы можете установить переменные среды в файле .env в корне вашего проекта и зафиксировать его в своем репозитории. Следующее доступно для [email protected] и выше, которые принимают значение version вашего файла package.json.

.env

REACT_APP_VERSION=$npm_package_version

Доступна версия Примечание: (и многие другие открытые переменные среды npm). Не кладите секретные ключи в свое хранилище.

Удалось ли вам получить доступ к переменным, предоставленным Netlify, например COMMIT_REF?

Casey 14.01.2019 21:54

Разобрался с моим вышеупомянутым вопросом. CRA переопределяет process.env, чтобы предоставить переменные REACT_APP. Чтобы получить доступ к переменным netlify, вы должны переименовать их в сценарии сборки следующим образом: REACT_APP_COMMIT_REF = "$COMMIT_REF"

Casey 15.01.2019 15:35

? Верно. Во время сборки код клиентского приложения будет иметь к ним доступ только в том случае, если они начинаются с REACT_APP_.

talves 15.01.2019 15:47

Хотя есть много способов сделать это, самый простой способ, который я нашел для добавления переменных среды Netlify в мое приложение React, заключался в создании файла .env в корне проекта со следующим содержимым:

# React Environment Variables
# https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#expanding-environment-variables-in-env

# Netlify Environment Variables
# https://www.netlify.com/docs/continuous-deployment/#environment-variables
REACT_APP_VERSION=$npm_package_version
REACT_APP_REPOSITORY_URL=$REPOSITORY_URL
REACT_APP_BRANCH=$BRANCH
REACT_APP_PULL_REQUEST=$PULL_REQUEST
REACT_APP_HEAD=$HEAD
REACT_APP_COMMIT_REF=$COMMIT_REF
REACT_APP_CONTEXT=$CONTEXT
REACT_APP_REVIEW_ID=$REVIEW_ID
REACT_APP_INCOMING_HOOK_TITLE=$INCOMING_HOOK_TITLE
REACT_APP_INCOMING_HOOK_URL=$INCOMING_HOOK_URL
REACT_APP_INCOMING_HOOK_BODY=$INCOMING_HOOK_BODY
REACT_APP_URL=$URL
REACT_APP_DEPLOY_URL=$DEPLOY_URL
REACT_APP_DEPLOY_PRIME_URL=$DEPLOY_PRIME_URL

Отобразите все эти переменные env, поместив их в видимые компоненты:

<pre>{JSON.stringify(process.env, undefined, 2)}</pre>

Важный! Вам нужно будет перезапустить (или пересобрать) приложение, чтобы устанавливать эти переменные среды в любое время, когда они меняются.

У меня это отлично сработало, спасибо!

Steve 14.09.2021 01:58

Другие вопросы по теме