问题标签 [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 投票
1 回答
1659 浏览

typescript - 如何使用 Inversify 和 Mocha

我在我的 TypeScript Node.js 应用程序中使用 Inversify 进行依赖注入。这在实际运行应用程序时效果很好。

但是,@injectable()注释似乎削弱了我的测试。运行测试时,我现在收到一条错误消息:

我以前见过这个,并得到了另一个 SO 答案的帮助:https ://stackoverflow.com/a/43115660/4003671

但是,导入inversify.config并不能解决我的测试中的问题。如果我@injectable()从我正在测试的类中删除注释,那么测试就会运行。

我的测试中实际上不需要 DI,因此以某种方式禁用它是一个可以接受的解决方案。

有没有人见过这个?

0 投票
1 回答
1630 浏览

node.js - inversify:如何处理与通用接口/类的绑定

我正在将 inversify 用于使用 typescript 开发的平均堆栈应用程序。按照此网址的说明:https : //www.npmjs.com/package/inversify,我创建了 inversify.config.ts 文件并添加了与我的需求相关的代码。我的一个绑定收到以下错误:“错误:(39, 71) TS2349:无法调用类型缺少调用签名的表达式。类型'typeof ExampleRepository'没有兼容的调用签名。”。

inversify.config.ts 条目将如何更改以适应这种需求?我在这里做错了什么?inversify 可以处理这种情况吗?

0 投票
1 回答
714 浏览

typescript - InversifyJS 不在嵌套类中注入依赖项

我正在尝试在我的打字稿应用程序中使用 InversifyJS 进行依赖注入。当我按照文档中给出的简单示例进行操作时,一切正常。但是,依赖项不会注入到依赖项链中较低的类中。希望这个例子能让我想说的更清楚。我尽可能多地删除了样板:

EmployeeFactory.ts

公司.ts

员工.ts

然后这是我运行以获取错误的代码

所以我的问题是:如何在我的应用程序中没有“myContainer”的情况下将 EmployeeFactory 注入到 Employee 类中?我确定我遗漏了有关 InversifyJS 的一些重要信息,因此感谢您提供任何帮助。

0 投票
1 回答
2042 浏览

node.js - inversify:如何绑定模型到容器对象

我正在使用 typescript、mean stack、inversify-express-utils 和 inversifyjs 作为我的 IOC 容器来开发应用程序。我在 inversify.config.ts 文件中为将模型添加到容器的条目中的条目收到错误消息。例如,

反转.config.ts:

这似乎导致以下错误:“模型类型的参数不可分配给'new(...args:any [])=> Model'类型的参数。类型'IUserModel'不是可分配类型'Model'。 'IUserModel' 类型中缺少属性 'findByid'。”

igroupmodel.ts:

类型.ts:

group.js(最后一行):

将猫鼬模型注入容器的正确方法是什么?我一直在寻找一个演示如何使用 inversifyjs 和 mongoose 的示例,但尚未找到解决方案。

更新:当我用 toConstantValue(User) 替换 to(User) 时,我不再收到错误消息。但是,我的日志文件似乎在我的日志文件中显示以下错误:

“错误:没有为 serviceIdentifier 找到匹配的绑定:模型”

0 投票
1 回答
1106 浏览

express - InversifyJS:每个 HTTP 请求的依赖项实例化

我在 Express 项目中使用 Inversify.JS。我想创建一个到 Neo4J 数据库的连接,这个过程有两个对象:

  1. 驱动程序对象 - 可以在应用程序之间共享并且只创建一次
  2. session 对象 - 每个 HTTP 请求都应该针对驱动创建一个会话,其生命周期与 http 请求生命周期相同(只要请求结束,连接就被销毁)

如果没有 Insersify.JS,这个问题可以使用一个简单的算法来解决:

(例如:https ://github.com/neo4j-examples/neo4j-movies-template/blob/master/api/neo4j/dbUtils.js#L13-L21 )

要为驱动程序创建静态依赖项,我可以注入一个常量:

container.bind<DbDriver>("DbDriver").toConstantValue(new Neo4JDbDriver());

如何创建每个请求仅实例化一次的依赖项并从容器中检索它们?

我怀疑我必须在这样的中间件上调用容器:

提前致谢。

0 投票
1 回答
2055 浏览

typescript - 如何使用 inversifyJS 将值传递给类构造函数?

您好有一个带有 inversify 和 requirejs 的打字稿测试项目,可以从以下位置克隆:https ://github.com/ahedreville/ioctest.git

他的 package.json 如下

您可以通过以下命令在浏览器上运行该项目...

如您所见,打开浏览器开发者控制台日志,接口 IProblem 被解析为 Question2 类,正如我们在类 ioc_config.ts 上要求的那样

Question2类如下

但是如果我更改 ioc_config.ts 上的目标分辨率类

更改 ioc_config.ts 类如下

现在 IProblem 接口的解析将失败,因为 Question.ts 有一个构造函数,它期望传递一些值。

问题类如下

我该如何解决这个问题(我是 inversify 的新手)并在解析时将一些值传递给构造函数?

0 投票
1 回答
58 浏览

node.js - 使节点包可注入

如何使节点包(来自node_modules的类)可注入?

inversify在我的应用程序中使用,我想将Validator.ts类绑定到我的容器。我该怎么做?

const container = new Container(); container.bind<Validator>(Validator).toSelf();

还不够,因为我得到了:

Error: Missing required @injectable annotation in: Validator.

0 投票
2 回答
1571 浏览

oop - InversifyJS:无法使用接口绑定

我正在尝试使用 inversify JS 来注入对 TypeScript App 的依赖项。我首先使用https://github.com/inversify/InversifyJS页面的示例:

我应用了示例中提供的但 Vscode 并tsc通过显示此错误在绑定行失败[ts] Untyped function calls may not accept type arguments. [ts] Cannot find name 'Warrior'.

0 投票
1 回答
1003 浏览

typescript - 使用 Inversify 对具有常量和注入参数的类进行多重注入

我有一个名为 insuranceController 的 Typescript 类,它接受一个多注入参数,如下所示:

insurancePolicy 类需要一个数字作为构造函数参数

所以我按如下方式创建绑定:

这一切都很好。但是我现在想将第二个参数注入到 insurancePolicy 类中:

我怎样才能做到这一点?我尝试查看此处概述的技术:InversifyJS Injecting Literal Constructor Parameters,但我看不出它们在多重注入场景中如何工作。请注意,InsuranceController 本身是注入的,因此我无法手动创建它。我应该如何使用 Inversify 来解决这个问题?

0 投票
1 回答
6981 浏览

typescript - 在 Inversify 中,为什么更喜欢构造函数/工厂注入而不是 toDynamicValue?

InversifyJS中,遵循工厂注入指南构造函数注入指南中概述的方法分别注入工厂和构造函数比仅使用toDynamicValue是否有任何特定优势。