我无法读取mikro-orm.config.ts中的env值

I can't read env values in mikro-orm.config.ts

提问人:saltwoodYJ 提问时间:11/15/2023 更新时间:11/22/2023 访问量:18

问:

我在 nest js 中使用 mikro-orm,并使用 configService.get() 编写 mikro-orm.config.ts。 但它没有获得环境值。Process.env 也是如此。 在其他文件(如 main.ts)中,它可以正确获取 env,但在 mikro-orm.config.ts 中则不能。 我应该如何获得它?

import { Logger } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Options } from '@mikro-orm/core';
import { SqlHighlighter } from '@mikro-orm/sql-highlighter';

const configService = new ConfigService();

const logger = new Logger('MikroORM');
const MikroORMConfig: Options = {
  dbName: process.env.POSTGRES_DATABASE == '' ? 'database' : 'database',
  user: process.env.POSTGRES_USER,
  password: process.env.POSTGRES_PASSWORD,
  host: process.env.POSTGRES_HOST,
  port: parseInt(process.env.POSTGRES_PORT),
  type: 'postgresql',
  entities: ['./dist/**/*.entity.js'],
  entitiesTs: ['./src/**/*.entity.ts'],
  highlighter: new SqlHighlighter(),
  migrations: {
    path: './src/feature/database/migrations',
  },
  logger: logger.log.bind(logger),
};
export default MikroORMConfig;

我使用 process.env 和 configService,但它们都没有得到 env。

配置 Nest mikro-orm

评论


答:

0赞 Martin Adámek 11/22/2023 #1

您不能将 nestjs 中的任何内容用于 CLI 配置,CLI 不知道这样的事情。你在哪里定义环境变量?我猜是某个文件?ORM将尝试自动读取它,但前提是它位于项目的根目录中(并且准确命名)。.env.env

如果文件位于其他位置或名称不同,则可以在 CLI 配置中注册它:.env

import 'dotenv/config'; // or require('dotenv').config()
import { defineConfig } from '@mikro-orm/postgresql';

export default defineConfig({ ... }); // also prefer using `defineConfig`