问题标签 [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 - 将特定值注入对象构造函数
我有几个接口的实现,它们每个都需要将自己的配置注入到构造函数中。我的问题是我是否可以以某种方式挂钩 NestJS(可能是 Inversify)中的依赖注入系统,以注入不仅是配置对象,而且是配置对象的特定子集。例如,如果config.ts
看起来像这样:
我想以我的磁盘实现接收config.adapters.disk
、我的保管箱实现接收config.adapters.dropbox
等的方式注入配置,而不仅仅是config
mongodb - 在 expressjs、mongodb、inversifyjs 中的 db 操作回调之前获得 204 响应
我想将新文档添加到 mongodb 并获得一个插入的 id 作为具有 201 状态的响应,但是当 db.insertOne 调用时,我在点击工作之前得到带有 204 状态代码的响应。这是我的控制器
在我的 StarService
在 MongoDBClient 中
如何获得具有正确状态代码和正文的 json 响应
typescript - 如何使用 Inversify + inversify-express-utils 实现 Controller 的组件扫描/自动发现
我正在寻找一种在 Inversify 中加载我的控制器类的方法,这些控制器类使用 from 进行注释,@controller()
而inversify-express-utils
无需管理手工制作/手动构建的导入/导出模块。
我看到的所有示例似乎都表明,在您的入口文件中,您需要显式地导入每个控制器,以便inversify-express-utils
获取@controller
注释,但是对于中型到大型的应用程序来说,这感觉相当乏味。
在纯 JavaScript 中,我会在运行时递归地要求目录中的每个文件,但是我知道由于 TypeScript 的工作方式,这不是完全可能的吗?
使用该inversify-binding-decorators
包,我可以简单地注释服务,@provide()
这似乎足以将类添加到 IOC 容器中,但这似乎不足以inversify-express-utils
发现@controller()
类上的注释。
有没有办法实现这些@controller()
带注释的类的自动发现,而无需手动将它们导入入口文件?
/services/StarwarsNamesService.ts
/controllers/StarWarsNamesController.ts
boostrap.ts
抛出错误:
javascript - inRequestScope 未按预期工作
帮助使用 inRequestScope inversifyJS 例如:
我希望在第二次调用 get 时返回相同的实例,而不是再次实例化它
node.js - 无法导入导出的函数
当我从导出文件的文件中导入内容时,我遇到了 Typescript 的奇怪问题。有时我会导出一个函数,然后将其导入另一个文件,然后我使用该函数,它不再是一个函数。当我在同一个文件中定义函数时,突然函数是函数?!?!?
为什么一个函数在导出时会不再是一个函数?我在课堂上也遇到过类似的问题。
这个问题的难点在于我无法重新创建一个简单的示例,因为它仅在我使用某种更高级别的包时才会发生。
例如,我在这里遇到了与 sequelize-typescript 类似的问题:my github issue with typescript-sequelize
下面是一些代码,展示了我在使用 InversifyJS 的装饰器之一时遇到的基本问题。
容器.ts
测试服务.ts
最奇怪的是,当我将 与provideSingleton
放在同一个文件中时TestService
,一切正常!?!?!
基本上要重新创建问题,只需按照此处的示例进行操作:inversify-binding-decorators - Using @provideFluent multiple times。但是这个例子有一个问题,所以请看这个问题:fluentProvide example required。以上provideSingleton
反映了该问题的变化。然后您只需从另一个文件中导入该provideSingleton
函数,而不是像示例中那样定义它。
谁能向我解释我错过了什么?为什么哦,为什么某些出口项目不会被视为它们的类型?有没有我没有看到 NodeJS 采取的步骤来使项目实际导出并因此有所不同?我可以强制函数解析为函数,以便可以这样使用吗?
环境:
NodeJS:10.9.0
打字稿:3.0.1
Mac:10.13.16
typescript - Babel 7 + Inversify 4 + WebPack 4 - @inject 上的意外字符'@'
我有一个使用Inversify的打字稿 Vue SPA 项目。
我使用awesome-typescript-loader来编译我的 typescript 源代码;现在我想切换到Babel,但是当我编译我的应用程序webpack时会引发这个错误:
模块解析失败:意外字符 '@' (38:25) 您可能需要
适当的加载程序来处理此文件类型。
| _inherits(ReportService, _BaseService);
| > 函数 ReportService(@inject(TYPES.Urls)
| urls) {
| 变量 _this;
@ ./app/Ioc/container.ts 6:0-54 14:39-52
@ ./app/startup.ts
.babelrc
tsconfig.json
webpack.config.js
如果我使用链接到babel-loader的 awesome-typescript -loader
并删除不必要的 babel 插件并预设它可以工作。
node.js - 使用装饰器注入类时测试失败
这可能是我的环境问题,但我在测试使用装饰器的注入类时遇到问题。
我希望有人能看到我所缺少的。
注意:当我运行代码时,它运行良好。该错误仅在运行笑话测试时发生。我有一个运行良好的完整测试套件。当我删除装饰器注释并且不再具有类时,失败的测试通过了 extend EventEmitter
。
我也ts-node
用来运行代码。我用ts-node ./node_modules/.bin/jest src/event-emitter-inversify/__tests__/event-emitter-inversify.test.ts
我不确定为什么测试失败并且运行成功。
我一直在测试中看到错误TypeError: Cannot read property 'constructor' of null
。
这是设置。
事件发射器-inversify.ts
事件发射器反转-dependent.ts
run.ts (运行良好!)
event-emitter-inversify.test.ts (失败)
我运行测试:
它失败了:
堆栈跟踪
关于我错过了什么或做错了什么的任何想法?
angular - 为构造函数注入反转组合根
我来自 c# 背景。我是 Angular 6 的新手。我了解到对于 DI 有类似于 ninject 的库。反转。我试图在应用程序中使用它。
我确实配置了绑定和类型。
类型.ts
绑定.ts
还有我正在注入 APPService 的班级
模块.ts
编译成功。但我得到运行时错误Can't resolve all parameters for SummaryApp
这意味着 inversify 无法解决依赖关系。我看到很多例子,人们使用服务定位器解决了依赖问题。但我觉得它的反模式。我在哪里可以得到 inversify 容器的组合根?
node.js - 如何使用外观设计模式在nodejs中汇集postgresql连接?
您好,我正在使用类似于外观设计模式的设计编写简单的 Web 应用程序。应用程序是使用 nodejs、expressjs、node-postres 和 inversify 用 Typescript 编写的。假设我有这个简单的例子
路由器.ts
测试控制器.ts
测试UC.ts
测试管理器1.ts
测试Sql1.ts
PostgresClient.ts
TestManager2.ts 和 TestSql2.ts 与 TestManager1.ts 和 TestSql1.ts 基本相同
我的问题是每个请求似乎只使用来自池的一个相同的 postgresql 连接(用 JMeter 测试)并序列化所有 api 请求。Pool 甚至不会创建到 postgresql 的其他连接。看起来其他请求正在等待先前的请求结束或 postgresql 连接释放。
如何使用 node-postgres 池为每个请求实例化一个连接(事务),同时不阻止其他请求?
这段代码是阻塞的吗?或者我误解了文档中的某些内容?或者只是这种设计不适合 nodejs?我现在真的没有,并且坚持了一周。