Pull to refresh

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, первый вариант предпочтительнее.

Sign up to leave a comment.