问题标签 [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.

0 投票
0 回答
818 浏览

javascript - Inversify 容器在运行时未定义

当我尝试执行 getNamed() 时,无法从 inversify 容器中获取实例。容器定义好,打字稿没有报错,可以看到导入的类型是“Container”;但是,在运行时容器中是未定义的。

我正在绑定 UserRepo 类,如下所示,并将容器导出为“Registry”

我得到的错误是

我在我的应用程序的根目录中为不同的类执行相同的代码,它可以工作。如果有人能指出我在哪里犯了错误,那就太好了。

0 投票
0 回答
692 浏览

node.js - 如何在nodejs中开玩笑地存根/模拟方法/构造函数的参数以进行单元测试?

我对节点 js 和 jsest 很陌生。我有一堂课要使用jest进行单元测试:

我在网上搜索了许多教程,但找不到如何模拟/存根 dao(如在 java/Junit 中所做的那样)以返回存根数据。
我在下面尝试但很困惑:

什么可以代替以及调用 dao.executeQuery(id) 时如何返回模拟数据?

请帮忙。谢谢。

0 投票
1 回答
81 浏览

javascript - InversifyJS:从多注入定义中注入特定的混凝土

假设我在 InversifyJS 中使用了多重注入,就像在官方示例中一样:

是否可以从绑定的结核中注入特定的结核?例如,我想明确地注入 Katana 凝结物,我该怎么做?我不想使用多注入和迭代/访问数组。就我而言,我需要在一个地方进行多次注射,在另一个地方进行单次注射。

这不起作用,因为它给出了一个模棱两可的定义错误:

0 投票
1 回答
48 浏览

typescript - DI:类的构造函数注入如何多次调用

有几个类,如何注入TermsExchangeService

和服务如何在PurchaseMainComponentTermsExchangeComponent

我使用autoBindInjectable

TermsExchangeService调用的循环构造函数中获取组件时:

为什么要在每个组件中创建对象?以及如何正常注射?

0 投票
1 回答
435 浏览

javascript - InversifyJS - 注入对象的特定实例

我开始在 Dynamics 365 开发中使用 InversifyJS。为了给您一些上下文,Dynamics 允许您扩展平台编写自定义业务逻辑(使用 JS)并将其附加到定义的表单事件。在此示例中,我想实例化我的业务逻辑类并在表单 onload 事件上执行我的自定义代码。代码应如下所示:

可以想象,onLoad当事件发生时,Dynamics 365 将调用该函数。表单上下文(ExternalContext在本例中)将作为参数传递给函数。这个对象非常重要,因为它允许我们的代码与表单中存在的控件进行交互,而我想要注入到中的正是这个对象BusinessLogic

业务逻辑类:

只是另一个示例依赖项:

如何ExternalContext将平台传递给我的方法的对象注册/注入onLoad到我的业务类中?我考虑将它存储在容器上下文中,但我确信有更好的方法来做到这一点。

0 投票
0 回答
1117 浏览

node.js - 初始化另一个服务后,如何在 inversify 中绑定服务?

我使用 inversify,我有一些看起来像这样的代码:

我的问题是我需要在注册 GQLQueryLoader 之后才注册 HeaderAndFooterManager,因为它仅在加载后才使用查询。

该容器在应用程序中使用如下:

编辑>>> T问题是服务器启动时两个服务都需要在构造函数中初始化一些状态。GQLQueryLoader 需要从磁盘加载查询并提供对它们的访问,因此我不必在每次请求时从磁盘读取,并且 HeaderAndFooterManager 需要在构造函数中执行一些查询,以便在服务器启动时缓存结果,以便我将该信息保存在内存中,但它需要访问 GQLQueryLoader 加载的查询。我所做的不是在第一次需要之前初始化页眉和页脚数据。我检查是否加载,如果没有加载它。但是,这只是一种解决方法,并且感觉这是一种重要的问题,知道如何以干净的方式解决。

0 投票
1 回答
5596 浏览

javascript - NestJS 在非模块文件中注入模块服务

我有一个用于视图渲染的函数文件,我想在这里使用 nestjs 模块服务。我的渲染文件是这样的。

因此,为了在这里使用模块服务,我尝试像这样注入。

当我尝试在这里创建新类时,出现错误“预期 1 个参数但得到 0”

我的 MemberService 是这样的

那么我应该如何注入服务以在此文件中使用?

0 投票
2 回答
173 浏览

javascript - 将类型传递给依赖注入容器

我在不使用 ORM 工具的情况下支持多个数据库。对于这个例子,我将展示一个 Postgres 和 MSSQL UserQueries的例子

在此处输入图像描述

我有一个接口IDataBase,多个数据库实现了这个接口。

此外,我的IUserQueries界面定义了查询

QueryResult是一个自定义类,以确保每个数据库查询都为我的 API 返回相同的数据对象。我的 API 从目标接口调用特定查询。如果mssql是配置文件中的标识符,我的应用程序应该创建到 MSSQL 数据库的连接。但是我的 API 文件不应该关心并且不知道这一点(显然,这就是接口的作用)。

一个基本的例子是

现在事情变得棘手了。我的 DI 容器:

DI 容器不知道选择哪个查询文件。它可能是MSSQLUserQueriesor PostgresUserQueries。我怎么解决这个问题?启动服务器( app.ts )时可以选择正确的查询,但据我了解,这个 DI 容器完全独立于应用程序,只是充当配置文件,所以我不应该传入抽象UserQueries类.

0 投票
0 回答
473 浏览

node.js - Inversify - Nodejs- 容器绑定导致超出最大调用大小

我正在尝试在 typescript 的一个小项目中使用 inversify 进行 DI 注入。我想创建一个日志中间件,用定制的 pino 记录器记录每个请求。我确实在创建应用程序时手动建立了依赖关系,但被 inversify 吸引并想尝试一下。

但我被卡住了,无法继续。这是我面临的错误。不确定是什么导致调用超出堆栈大小。请帮帮我

PinoLoggingService.ts

我的 AppConfigService.ts - AppConfigModel 只是一个带有 getter 和 setter 的普通 ts。

这是我的 loggingMiddleware.ts

这是我的请求跟踪中间件

这是我的反转配置

这是我的 server.ts

这是我设置的示例控制器。

0 投票
1 回答
762 浏览

annotations - Jest 22 缺少必需的@injectable 注释

我们使用inversify来注册和使用某些服务。

只有当我从 Jest 20 升级到 22 时,我在一些测试中突然出现这个错误:

在 MyService 中缺少必需的 @injectable 注释。

下面有一行代码指向,与该错误没有任何关系。

我已经检查了发行说明以找出发生了什么变化,但没有。

这里可能是什么问题?为什么在执行应用程序时不会出现错误,而只是在使用 Jest 22 的测试中?我该如何调查?