У меня есть веб-приложение в 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 должна быть переменной. Спасибо!
Вы не можете получить динамический доступ к этим свойствам, как вы это делали, поскольку 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.