Nextjs с использованием process.env с именем динамической переменной

У меня есть веб-приложение в Nextjs как в режиме сервера, так и в режиме клиента, доступ к process.env, подобный этому, всегда возвращает мне «неопределенное»:

.env-файл

NEXT_PUBLIC_CURRENCY_ES=Euros
NEXT_PUBLIC_CURRENCY_MX=Pesos
NEXT_PUBLIC_CURRENCY_GB=Pounds

CURRENCY_ES=Euros
CURRENCY_MX=Pesos
CURRENCY_GB=Pounds

Код:

//Client side 
//country can be: ES, MX, GB
const varName = "NEXT_PUBLIC_CURRENCY_" + country.toUpperCase();
console.info(process.env[varName]); // this returns undefined
console.info(process.env.NEXT_PUBLIC_CURRENCY_ES); // this prints "Euros"



//Server side 
//country can be: ES, MX, GB
const varName = "CURRENCY_" + country.toUpperCase();
console.info(process.env[varName]); // this returns undefined
console.info(process.env.CURRENCY_ES); // this prints "Euros"

Как я могу получить process.env[varName] с допустимым значением? не неопределенно? varName должна быть переменной. Спасибо!

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

Ответы 1

Ответ принят как подходящий

Вы не можете получить динамический доступ к этим свойствам, как вы это делали, поскольку Next.js использует DefinePlugin веб-пакета для «замены строки» на них.

Почему вы используете переменные env для валюты, зависят ли они от env, в котором работает приложение? Если нет, используйте обычный POJO (обычный старый объект Javascript) в качестве константы, которую можно импортировать из любого места.

// currencies.js

export const currencies = {
  es: 'Euros',
  mx: 'Pesos',
  gb: 'Pounds',
};

// otherModule.js
import { currencies } from './path-to/currencies.js';

console.info(currencies.es); // will print "Euros"

Лучше всего использовать переменные env для переменных, которые являются значениями, зависящими от «config» или env, такими как paths / accessKey / tokens.

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