问题标签 [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.
typescript - 为什么我的属性注入尝试除了未定义之外没有注入任何东西?
我有一个使用 inversify 的现有打字稿项目。我在我的 TYPES 中定义了一个记录器,TYPES.ILoggger
当我直接从我的容器访问记录器时,它可以工作:
所以我的设置应该没问题。
我不想直接访问容器,但我想使用属性注入。[InversifyJS 的README提供了一个示例:
如果你喜欢它,你可以使用属性注入而不是构造函数注入,这样你就不必声明类构造函数:
我试着跟随那个。
然而,当我尝试通过属性注入注入记录器时,我突然undefined
变成了记录器,我不知道为什么:
它会抛出一个泛型
因为this.logger
没有被注入。然而,为什么以及如何解决它?
typescript - 是否可以在 Jasmine 单元测试中修改或模拟 Typescript 类使用的 Inversify 容器?
我有一个 Typescript 类,它使用 InversifyJS 和Inversify Inject Decorators将服务注入私有属性。从功能上讲,这很好,但我在弄清楚如何对其进行单元测试时遇到了问题。我在下面创建了我的问题的简化版本。
在 Jasmine 单元测试中,我怎样才能用 a 替换注入RealDataService
的FakeDataService
?如果该属性不是私有的,我可以创建组件并分配一个假服务,但我想知道这是否可以通过使用 IOC 容器来实现。
我最初在 InversifyJS 食谱页面中遵循了这个示例,但很快意识到他们创建的容器没有在任何被测试的类中使用。此外,我在InversifyJS文档中看到的大多数代码示例都没有介绍如何对其进行单元测试。
这是问题的简化版本:
我的组件.ts
数据服务.ts
国际奥委会配置
单元测试
inversifyjs - Do I need reflect-metadata package with inversify if I use express and angular?
The inversify docs say
The reflect-metadata polyfill should be imported only once in your entire application because the Reflect object is mean to be a global singleton. More details about this can be found here.
If your environment don't support one of these you will need to import a shim or polyfill
I'm using LTS node+express for my server. And latest angular for my client.
So I assume:
- I don't need it for my server project, because LTS node doesn't need these shims
- I don't need it for my client project, because angular bundles various shims automatically
Is that correct? When would that package be needed?
typescript - 逆向控制器中的错误处理
我正在使用该inversify-express-utils
软件包。
假设我有一个返回User
实体的控制器操作:
我知道我可以省略返回类型,但我不想绕过类型系统。
那么我从那个 catch 块返回什么?
typescript - 反转错误,TypeError: Reflect.hasOwnMetadata is not a function
我在一个项目中使用 inversify.js,我决定将我的数据访问类作为一个单独的 NPM 包发布。
包导出一个类
在我的主要项目中使用该类会导致错误reflect-metadata
错误
不确定是什么触发了错误,一切似乎都井井有条。任何帮助将不胜感激。
javascript - InversifyJS @multiInject 键值映射
我正在尝试用 InversifyJS 创建一个忍者。可以说我的忍者可以同时使用多种武器进行战斗。我可以用 @multiInject() 装饰器来实现它:
如果我将我的武器存储为阵列,那没关系。但是如果我想将它们存储为键值对呢?
如何使用 Inversify 实现这一点?
node.js - 如何修复错误 [ERR_ASSERTION]:构造函数已存在!("inversify-restify-utils": "^3.4.0") 和 ("inversify-restify-utils": "^3.4.0")
node_modules/restify-errors/lib/index.js:67 assert.equal(typeof module.exports[name], 'undefined', ^ AssertionError [ERR_ASSERTION]: 构造函数已经存在!
它应该能够运行
堆栈轨道
node.js - typescript dependency injection with little footprint
I am new to nodejs and typescript, coming from C#. I want to use dependency injection in my project and found that the most popular package is inversify.
I started using it but I don't like the fact that I have to add decorators all over.
for example it bothers me that I need to add @inject before parameters in the constructor:
This mean every class has to know the TYPES object...
I don't understand why @inject needs the string literal and can't inject just on the basis of the type...
Is there a neater way to do this?
typescript - 将 InversifyJS 用于 DI 时出现 AWS Lambda 内存问题
我将 InversifyJS 与 AWS Lambda 一起使用。我使用 Typescript 并拥有控制器、服务和存储库层。在所有层中,我都使用 InversifyJS 的构造函数注入。我的函数正在返回一些静态虚拟文本。所以问题是 - 当我将 Inversify 用于 DI 时,我在 AWS Cloudwatch 中的内存使用率很高(对于简单的 hello world 大约为 160 MB),但如果没有 Inversify,内存会下降到正常水平(大约 50 MB)。
想听听一些将 DI 与 AWS Lambda 结合使用的真实生活体验。也许一些替代方法可以实现 DI,或者它完全没有用于无服务器开发?
typescript - TypeScript InversifyJS:接口多种实现的复杂绑定
对不起,如果标题含糊不清..
我有以下接口实现ILogProvider
:
MultiLogProvider
、、、LogInjector
和AppInsightsLogger
ConsoleLogger
我也有课DeviceInfoManager
..
预期的行为是:
ILogProvider
在这种情况下, MultiLogProvider 接受一个,AppInsightsLogProvider
和ConsoleLogger
MultiLogProvider
被注入LogInjector
andDeviceInfoManager
(仅供参考,LogInjector
依赖于DeviceInfoManager
,因此很复杂)任何其他请求
ILogProvider
都应该得到LogInjector
我已经尝试了, 和其他几个函数的一些不同变体.when
,但我要么最终得到循环依赖,要么由于一些看似不确定的解析循环,请求永远无法解析。.whenNoAncestorMatches
.when*
我相当肯定这两行是正确的:
我无法弄清楚.when
以下 2 使用什么功能:
感谢任何帮助。