问题标签 [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 回答
1301 浏览

typescript - 如何在多个注入实例之间共享一个瞬态对象实例?

在 Inversify 中,在多个对象之间共享单个对象实例(具有瞬态生命)的最佳方法是什么。

所以让我们说我们有:

如果不使“bar”成为单例,是否可以配置 IoC 容器,以便两个注入的实例foo1foo2在控制器注入某处时获得相同的 bar 实例。

我能想到的明显方法是:

  1. 要将 Foo1 和 Foo2 注册为constructors/newables,请将它们注入到一个ControllerFactory使用公共 bar 对象实例化它们的 a 中。

  2. 使用分层 DI并将 bar 注册为子容器中的单例,该子容器在每次需要实例化新控制器时创建。

由于需要显式实例化,我认为 1 并不理想。

有没有更好的方法来处理这个?

0 投票
1 回答
4506 浏览

dependency-injection - 反转循环单例注入

我正在尝试使用两个单身人士并让他们能够像这样互相打电话

但它给出了这个错误

如何解决这个问题?我试过了@inject@multiInject但没有运气!
从设计模式的角度来看,有没有更好的方法来考虑这个问题?

0 投票
1 回答
6746 浏览

node.js - expressjs 反转控制器中间件错误

我正在使用 nodejs、express 和 inversify 构建一个非常小的 rest api。

这是我的工作代码:

索引.ts

我的控制器.ts

上面的代码工作正常。当我想使用中间件检查身份验证令牌时,问题就出现了。

授权中间件.ts

如果我直接在控制器中直接使用 auth 中间件,我会按预期收到“不允许您”消息:

我的控制器.ts

但如果我使用反转:

我在编译时收到以下错误:

错误:未找到 serviceIdentifier 的匹配绑定:
错误:未找到 serviceIdentifier 的匹配绑定:
在 InversifyExpressServer.resolveMidleware (node_modules/inversify-express-utils/lib/server.js:133:27) 在 InversifyExpressServer.registerControllers (inversify-express- utils/lib/server.js:106:21) 在 InversifyExpressServer.build (node_modules/inversify-express-utils/lib/server.js:94:14) 在 Object. (dist/index.js:52:20)

我假设我必须在 index.ts 中声明我的中间件,就像我为控制器和服务所做的那样。我试过但没有成功。

谢谢

0 投票
2 回答
1714 浏览

typescript - 我的项目部署到服务器时没有定义反射

我正在尝试将我的 node.js 项目部署到 openshift 服务器,我的项目在我的本地机器上运行良好,但是当部署在服务器上时它抱怨如下

在 VS 代码上,当我跟踪文件并尝试查看它从 Reflect 中获取的位置时,我可以看到它是从 vs 代码库中的 lib.es6.d.ts 读取的,所以我猜该文件在服务器上不可用但我不知道如何将它包含在服务器中?

编辑1:我没有使用docker,我的package.js如下:

我的 tsconfig.json 是:

0 投票
1 回答
436 浏览

inversifyjs - 如何实现 inversifyJS 基本示例介绍 html 页面

我找不到带有 html 页面的示例或任何浏览器的实时示例(html 页面)。

我需要基本示例来导入 lib 并创建一个类。

我在http://inversify.io上找到 :

InversifyJS 编译为干净、简单的 JavaScript 代码,可在任何浏览器、Node.js 或任何支持 ECMAScript 5(或更新版本)的 JavaScript 引擎中运行。

0 投票
1 回答
1390 浏览

typescript - 打字稿注入和类中的参数

我使用 InversifyJS 和容器。

我想在构造函数中注入templateEngine并传递参数主机、端口等)。

还有我的邮件类:

如何使用注入或其他方法在构造函数中传递参数?

0 投票
1 回答
1104 浏览

node.js - 什么是允许 mocha 测试存根/模拟 fs 以便我可以在不访问磁盘的情况下测试函数的真实方法?

所以我的代码如下所示:

让我的单元测试代码阻止它实际访问磁盘的最佳方法是什么?

我应该使用 InversifyJS 之类的东西来允许依赖注入吗?我有一个初始化脚本,它会在应用程序正常运行时设置“默认值”,然后在测试中“覆盖”这些默认值?

0 投票
1 回答
387 浏览

node.js - 如何使用 inversifyjs 容器作为服务定位器


我正在为我的 IOT 项目(stm32f100 + WIFI esp)编写套接字服务器
我已经实现了通信协议,例如 GET 查询:
method=test&data[]=1&data[]=2...等
我想实现方法解析器,它将获取
来自 inversifyjs 容器的方法名称的服务(控制器)及其依赖项,
但我找不到如何将容器注入方法解析器

0 投票
0 回答
514 浏览

node.js - Node InversifyJS - 在所有路由中实现中间件

Inversify Express Utils的文档中,该示例显示了如何覆盖BaseMiddleware然后将其注入到控制器中的特定路由中,如此处所示

有没有办法将中间件注入到每条路由中,而无需专门将其包含在每个@httpX装饰器中?

0 投票
1 回答
139 浏览

inversifyjs - 我可以避免在 Inversifyjs 中使用符号/字符串吗?

我希望能够简单地指定需要什么而不添加字符串或符号。这似乎适用于声明绑定:

但是,如果我不使用@inject并且在注入时不知道要放入什么,则会出现运行时错误: