提问人:saltwoodYJ 提问时间:11/15/2023 更新时间:11/22/2023 访问量:18
我无法读取mikro-orm.config.ts中的env值
I can't read env values in mikro-orm.config.ts
问:
我在 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。
答:
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`
评论