我在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。
您不能使用 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`