значение переменной среды не обрабатывается

#next.js #environment-variables #mailchimp

#next.js #переменные среды #mailchimp

Вопрос:

Я все еще изучаю env. Я не уверен, почему это не работает. У меня есть два файла в моей корневой папке проекта. ‘.env.local’ и ‘.env’. И значения для .env не обрабатываются. Однако .env.local работает нормально. Я полагаю, что я следовал тому же формату.

Для файла .env, если я просто напишу их на странице и предоставлю их, тогда они будут работать просто отлично.

Чего мне здесь не хватает, это в приложении NEXTJS. В vercel я просто добавил переменную среды к их встроенному механизму.

В моем коде я написал это, чтобы получить значение.

локальный файл env

 NEXT_PUBLIC_GOOGLE=xxxxxxxxxx
 

_app.js

мой env-файл MAILCHIMP_PUBLIC_USERNAME = xxxxx MAILCHIMP_PUBLIC_DOMAIN= xxxx MAILCHIMP_PUBLIC_POST=xxxxxxxxxxxxxxxxxxxxxxamp; MAILCHIMP_PUBLIC_ID = xxxxxxxx

Ответ №1:

Я думаю .env.local , что переопределяет другие файлы. Также не забудьте добавить NEXT_PUBLIC_ к переменным. После редактирования .env файла вы должны остановить и перезапустить сервер разработки. В вашем случае вам следует выполнить следующее

 NEXT_PUBLIC_MAILCHIMP_PUBLIC_USERNAME=xxxxx
NEXT_PUBLIC_MAILCHIMP_PUBLIC_DOMAIN=xxxx
NEXT_PUBLIC_MAILCHIMP_PUBLIC_POST=xxxxxxxxxxxxxxxxxxxx
NEXT_PUBLIC_MAILCHIMP_PUBLIC_ID=xxxxxxxx
 

Комментарии:

1. я избавился от локального файла, и теперь у меня есть только один .env.development — мой ключ Google Analytics работает нормально. Но другие значения для mailchimp не обрабатываются.

2. Пожалуйста, проверьте мой обновленный ответ.

3. Убедитесь, что все переменные MailChimp указаны правильно и что вы не используете строки там, где вы должны использовать число. Вы также можете сделать это, если вы сохранили число в виде строки в .env файле Number(String(process.env.NEXT_PUBLIC_MAILCHIMP_ID)) . Если все переменные верны, попробуйте остановить сервер разработки, очистить кэш браузера, удалить .next папку кэша и перезапустить.

4. Спасибо!! это был ключ — я пропустил Next_PUBLIC для других значений

Ответ №2:

Вы точно читали next.js документы о Environment Variables ? 😉

Это происходит потому, что, как мы можем прочитать в next.js документах:

В общем случае требуется только один файл .env.local. Однако иногда может потребоваться добавить некоторые значения по умолчанию для среды разработки (следующая разработка) или производства (следующий запуск).

Next.js позволяет устанавливать значения по умолчанию в .env (все среды), .env.development (среда разработки) и .env.production (производственная среда).

всегда переопределяет значение по умолчанию .env.local.

Здесь у вас есть гораздо больше примеров, как правильно использовать .env в next.js . источник, источник

Удачи и приятного изучения ;-)!

Комментарии:

1. я избавился от локального файла, и теперь у меня есть только один .env.development — мой ключ Google Analytics работает нормально. Но другие значения для mailchimp не обрабатываются.

2. @shar27 Я дал вам источники и лучшие советы, насколько мог. Если у вас возникла новая проблема.. Я предлагаю вам добавить новый вопрос 😉 Не забудьте добавить весь свой код! любые ошибки и информация;-) Удачи и наилучших пожеланий!

3. @shar27 Обратите внимание на это!!! важно, как и где вы используете переменные Переменные среды доступны только в Node.js (серверная) среда, что означает, что они не будут доступны браузеру. Для того, чтобы предоставить переменную браузеру (на стороне клиента), вы должны добавить к переменной префикс NEXT_PUBLIC_ .

4. @shar27 подсказка! проверьте свои источники 😉