typescript - 巢穴。自定义提供程序,注入无法解析 useFactory 的依赖关系
问题描述
我在应用程序启动期间收到以下错误:
Error: Nest can't resolve dependencies of the useFactory (?). Please verify whether [0] argument is available in the current context.
ConfigService
被导出并ConfigModule
作为第一个模块加载。不知道是我的错还是 NestJS 的 bug。也许有人能找到一些东西)谢谢。
数据库.providers.ts:
import { Sequelize } from 'sequelize-typescript';
import { SEQUELIZE_TOKEN } from './constants';
import { User } from '../users/user.entity';
import { ConfigService } from '../config/config.service';
export const databaseProviders = [
{
provide: SEQUELIZE_TOKEN,
useFactory: async (configService: ConfigService) => {
const sequelize = new Sequelize({
dialect: 'mysql',
host: 'localhost',
port: 3306,
username: configService.databaseUser,
password: configService.databasePassword,
database: configService.databaseName,
operatorsAliases: false,
logging: false,
});
sequelize.addModels([User]);
await sequelize.sync({ force: process.env.NODE_ENV === 'local'
|| process.env.NODE_ENV === 'test',
});
return sequelize;
},
inject: [ConfigService],
},
];
部分 app.module.ts:
@Module({
imports: [
ConfigModule,
DatabaseModule,
GraphQLModule,
UsersModule,
],
exports: [DatabaseModule],
})
部分 config.module.ts:
@Module({
providers: [
{
provide: ConfigService,
useValue: new ConfigService(`./config`),
},
],
exports: [ConfigService],
})
解决方案
你必须ConfigModule
在你的DatabaseModule
. Nest 中的提供程序默认情况下不是全局范围的。
推荐阅读
- c# - 如何编写我的 Aspect 类并解决我的问题?
- android - 将 Android apk SHA256 与 SafetyNet apkCertificateDigestSha256 匹配
- html - 除导航栏外,容器流体不占用全宽
- android - 将更新推送到 Ionic 应用程序是否可行且合法?
- java - 如何更改未用@Test 标记的方法(意味着它不在当前测试类中),但由我的注释标记
- python - Pony ORM 中表格的最小值/最大值/平均值
- python - 当我定义自定义管理器时..错误:无法通过 Post 实例访问管理器
- julia - Julia:引用由其他结构定义组成的结构
- python - 管道内的 Sklearn OneHotEncoding 正在转换所有数据类型,而不仅仅是分类/对象类型
- python - 使用 pythonTelegramApi 发送图片