Comments 7
По приведению типов и валидации ( а еще бы автоматической) явно не хватает Typescript. Да и может какую библиотеку кто написал?
Так class-validator вполне подойдёт.
import {
IsFQDN,
IsString,
transformAndValidateSync,
} from 'class-validator';
class Environment {
@IsFQDN()
DATABASE_HOST: string;
@IsString()
DATABASE_USERNAME: string;
@IsString()
DATABASE_PASSWORD: string;
}
export default transformAndValidateSync(Environment, process.env);
Непонятно, как поможет защитить кодирование секретов в base64
Ещё бы пару слов о том, как все это добро использовать с SSR на nuxt например, было бы вообще здорово. А так огромное спасибо - было полезно.
Статья не про переменныые окружения, а про dotenv пакет и экспресс.
Аснхронное использование, вообще непонятно о чем\зачем? Все так же синхронно получаешь внутри асинхронной функции.
Про валидацию слишком поверхронсто. Есть смысл реализовывать интерфейс валидации, желательно на тайпскрит. Где будет удобно задавать правила для валидации например в таком виде
HOST: envSchema.string({format: "host"});
PORT: envSchema.number();
FEATURE_ENABLED: envSchema.boolean()
OPTIONAL: envSchema.string.optional()
Валидировать все на старте приложения
И получение переменных обернуть в класс\объект который на вход принимает ключи из описаной выше схемы и возвращает соответствующие typescript типы.
Например
Env.get("PORT") //выведет number
Env.get("UNDEFINED") // если в схеме такой ключ не задан. Не должно принимать такой ключ, или возвращать тип any, первый вариант предпочтительнее.
Переменные окружения в Node.js: полное руководство