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

问题描述 投票:0回答:1

我在nest js中使用mikro-orm,并使用configService.get()编写mikro-orm.config.ts。 但它没有获得 env 值。 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。

configuration nest mikro-orm
1个回答
0
投票

您不能使用 Nestjs 中的任何内容进行 CLI 配置,CLI 不知道这样的事情。你在哪里定义环境变量?我猜是一些

.env
文件? ORM 会尝试自动读取该内容,但前提是它位于项目的根目录中(并且名称准确无误
.env
)。

如果

.env
文件在其他地方或名称不同,您可以在 CLI 配置中注册它:

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

export default defineConfig({ ... }); // also prefer using `defineConfig`
© www.soinside.com 2019 - 2024. All rights reserved.