问题标签 [inversifyjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Inversify 容器在运行时未定义
当我尝试执行 getNamed() 时,无法从 inversify 容器中获取实例。容器定义好,打字稿没有报错,可以看到导入的类型是“Container”;但是,在运行时容器中是未定义的。
我正在绑定 UserRepo 类,如下所示,并将容器导出为“Registry”
我得到的错误是
我在我的应用程序的根目录中为不同的类执行相同的代码,它可以工作。如果有人能指出我在哪里犯了错误,那就太好了。
node.js - 如何在nodejs中开玩笑地存根/模拟方法/构造函数的参数以进行单元测试?
我对节点 js 和 jsest 很陌生。我有一堂课要使用jest进行单元测试:
我在网上搜索了许多教程,但找不到如何模拟/存根 dao(如在 java/Junit 中所做的那样)以返回存根数据。
我在下面尝试但很困惑:
什么可以代替以及调用 dao.executeQuery(id) 时如何返回模拟数据?
请帮忙。谢谢。
javascript - InversifyJS:从多注入定义中注入特定的混凝土
假设我在 InversifyJS 中使用了多重注入,就像在官方示例中一样:
是否可以从绑定的结核中注入特定的结核?例如,我想明确地注入 Katana 凝结物,我该怎么做?我不想使用多注入和迭代/访问数组。就我而言,我需要在一个地方进行多次注射,在另一个地方进行单次注射。
这不起作用,因为它给出了一个模棱两可的定义错误:
typescript - DI:类的构造函数注入如何多次调用
有几个类,如何注入TermsExchangeService
:
和
和服务如何在PurchaseMainComponent
和TermsExchangeComponent
我使用autoBindInjectable
:
从TermsExchangeService
调用的循环构造函数中获取组件时:
为什么要在每个组件中创建对象?以及如何正常注射?
javascript - InversifyJS - 注入对象的特定实例
我开始在 Dynamics 365 开发中使用 InversifyJS。为了给您一些上下文,Dynamics 允许您扩展平台编写自定义业务逻辑(使用 JS)并将其附加到定义的表单事件。在此示例中,我想实例化我的业务逻辑类并在表单 onload 事件上执行我的自定义代码。代码应如下所示:
可以想象,onLoad
当事件发生时,Dynamics 365 将调用该函数。表单上下文(ExternalContext
在本例中)将作为参数传递给函数。这个对象非常重要,因为它允许我们的代码与表单中存在的控件进行交互,而我想要注入到类中的正是这个对象BusinessLogic
。
业务逻辑类:
只是另一个示例依赖项:
如何ExternalContext
将平台传递给我的方法的对象注册/注入onLoad
到我的业务类中?我考虑将它存储在容器上下文中,但我确信有更好的方法来做到这一点。
node.js - 初始化另一个服务后,如何在 inversify 中绑定服务?
我使用 inversify,我有一些看起来像这样的代码:
我的问题是我需要在注册 GQLQueryLoader 之后才注册 HeaderAndFooterManager,因为它仅在加载后才使用查询。
该容器在应用程序中使用如下:
编辑>>> T问题是服务器启动时两个服务都需要在构造函数中初始化一些状态。GQLQueryLoader 需要从磁盘加载查询并提供对它们的访问,因此我不必在每次请求时从磁盘读取,并且 HeaderAndFooterManager 需要在构造函数中执行一些查询,以便在服务器启动时缓存结果,以便我将该信息保存在内存中,但它需要访问 GQLQueryLoader 加载的查询。我所做的不是在第一次需要之前初始化页眉和页脚数据。我检查是否加载,如果没有加载它。但是,这只是一种解决方法,并且感觉这是一种重要的问题,知道如何以干净的方式解决。
javascript - NestJS 在非模块文件中注入模块服务
我有一个用于视图渲染的函数文件,我想在这里使用 nestjs 模块服务。我的渲染文件是这样的。
因此,为了在这里使用模块服务,我尝试像这样注入。
当我尝试在这里创建新类时,出现错误“预期 1 个参数但得到 0”
我的 MemberService 是这样的
那么我应该如何注入服务以在此文件中使用?
javascript - 将类型传递给依赖注入容器
我在不使用 ORM 工具的情况下支持多个数据库。对于这个例子,我将展示一个 Postgres 和 MSSQL UserQueries的例子
我有一个接口IDataBase
,多个数据库实现了这个接口。
此外,我的IUserQueries
界面定义了查询
QueryResult
是一个自定义类,以确保每个数据库查询都为我的 API 返回相同的数据对象。我的 API 从目标接口调用特定查询。如果mssql
是配置文件中的标识符,我的应用程序应该创建到 MSSQL 数据库的连接。但是我的 API 文件不应该关心并且不知道这一点(显然,这就是接口的作用)。
一个基本的例子是
现在事情变得棘手了。我的 DI 容器:
DI 容器不知道选择哪个查询文件。它可能是MSSQLUserQueries
or PostgresUserQueries
。我怎么解决这个问题?启动服务器( app.ts )时可以选择正确的查询,但据我了解,这个 DI 容器完全独立于应用程序,只是充当配置文件,所以我不应该传入抽象UserQueries
类.
node.js - Inversify - Nodejs- 容器绑定导致超出最大调用大小
我正在尝试在 typescript 的一个小项目中使用 inversify 进行 DI 注入。我想创建一个日志中间件,用定制的 pino 记录器记录每个请求。我确实在创建应用程序时手动建立了依赖关系,但被 inversify 吸引并想尝试一下。
但我被卡住了,无法继续。这是我面临的错误。不确定是什么导致调用超出堆栈大小。请帮帮我
PinoLoggingService.ts
我的 AppConfigService.ts - AppConfigModel 只是一个带有 getter 和 setter 的普通 ts。
这是我的 loggingMiddleware.ts
这是我的请求跟踪中间件
这是我的反转配置
这是我的 server.ts
这是我设置的示例控制器。
annotations - Jest 22 缺少必需的@injectable 注释
我们使用inversify来注册和使用某些服务。
只有当我从 Jest 20 升级到 22 时,我在一些测试中突然出现这个错误:
在 MyService 中缺少必需的 @injectable 注释。
下面有一行代码指向,与该错误没有任何关系。
我已经检查了发行说明以找出发生了什么变化,但没有。
这里可能是什么问题?为什么在执行应用程序时不会出现错误,而只是在使用 Jest 22 的测试中?我该如何调查?