问题标签 [tsyringe]
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.
node.js - 使用 tsyringe 使用 Typescript 进行动态依赖注入
我正在尝试构建和示例以了解 DI 框架/库的工作原理,但我遇到了一些问题。
我有这个接口有两种可能的实现:
子类
sum.ts
计算器.ts
索引.ts
有没有办法让我有两个具有不同行为的计算器,或者我做错了?
typescript - tsyringe container.resolve 在自定义装饰器中创建一个新的调用实例
我正在尝试为tsyringe创建一个自定义装饰器以通过属性注入。
我的代码:
服务
调用类
控制台输出
当前行为:每次调用注入类的方法时,都会再次调用构造函数。所以这意味着我的类在每次新调用时都会得到新的初始化。
当我使用以下代码时,一切似乎都在工作
控制台输出
发生这种情况的任何原因?
node.js - 无法在“GetModelService”构造函数的位置 #0 注入依赖项“modelRepository”。原因:无法读取未定义的属性“名称”
我一直在使用sequelize-typescript
,tsyringe
在这里进行重构工作,我在这里遇到了一个非常有趣的错误。好吧,通常我的所有存储库容器都正常注册并使用以下设置正确实例化:
我在我的应用程序的根目录和
tsyringe
它之后的容器上导入反映元数据容器/索引内部是以下代码,我
sequelize-typescript
用来制作存储库。然后我用快递做所有的路由:
所以我们去调用的路线
container.resolve()
这是他调用的服务
直到那里一切都很好并且工作正常,但是当我尝试将该模型与另一个使用
sequelize
.Tsyringe
停止能够正确注入依赖项并给出标题错误消息。这是我要关联的模型。如果我删除那个“
Model.hasMany(User);
”它会恢复正常并且注射发生,我很困惑不知道发生了什么......顺便说一下,这是我的模型库
如果信息太多,我很抱歉,但我试图提供尽可能多的信息,以便有人可以帮助我。但老实说,我对找到解决方案持怀疑态度,可能我不得不将此方法与这个模型并尝试分开做。正如您注意到的那样,我更改了模型的名称,所以我可能拼错了一些东西,但不用担心实际代码上没有拼写错误,因为这个错误只会在我将“
Model.hasMany(User);
”添加到initModel()
函数时发生。希望有人能够帮助我,我会在身边的任何问题都不要害怕问。:)
javascript - 无法使用 babel 将 tsyringe 打字稿文件转换为 javascript
似乎 babel/plugin-proposal-decorators 没有将 tsyringe inject() 和 injectable() 转换为 javascript。这是我用来将我的打字稿文件转换为 javascript 的脚本:
这是我的 babel.config.js:
这是在终端返回给我的错误:
这是我的 CreateUserService.ts 文件。这是我用来在我的应用程序中创建新用户的服务,我使用了两个 tsyringes 容器(usersRepository 和 hashProvider)。我使用TypeORM作为我的 ORM:
singleton - 如何在 Tsyringe 中实现单例
我在实现单例时遇到了麻烦,因为标记为@singleton() 的类在每个resolve() 上都被重新创建。
这是示例
如何获得所需的行为?
reactjs - 使用 tsyringe 与 TypeScript 反应以进行依赖注入
我目前在使用 React TypeScript 项目时遇到问题。
我创建了我的项目npx create-react-app my-app --template typescript
。
我最近为依赖注入添加了 tsyringe,并试图为 apiService 实现它。按照自述文件(https://github.com/microsoft/tsyringe#injecting-primitive-values-named-injection)添加原始值后,我遇到了障碍。我已经将实验性装饰器和发射装饰器元数据添加到我的tsconfig.json
文件中,但没有成功。
我遇到的错误实际错误是:
我相当确定这个问题是由 Babel 引起的,但是我使用 npm create react-app --template typescript 创建了这个问题,并且似乎无法访问 Babel 配置。
网络服务.ts
调用方法
在 index.ts 中注册类
node.js - 无法在位置 #0 注入依赖项,因为 TypeInfo 未知
我遇到了这个麻烦:
容器
控制器
用例
它在 Windows 上正常工作,但现在我已更改为 mac 并停止工作。我已经delay
从tsrynge
但仍然无法正常工作。
当我调用使用此存储库的路由时会发生这种情况,但看起来不错,数据库已创建。
我在应用程序文件中的导入:
javascript - 使用 tsyringe 使用构造函数参数注册服务
我有一个服务来处理一些数据获取,我正在尝试使用 tsyringe,创建服务的函数被多次调用(我对此无能为力),所以它创建了许多服务实例。我试图将它包装在“container.isRegistered”检查中,但是当我这样做时,它根本不会注册服务。
到目前为止,我所拥有的是:
然后我在另一个文件中注册它:
在另一个文件中,我像这样解决它:
尝试检查它是否已注册会完全停止服务的注册,但如果没有,我将运行多个实例。该服务主要处理数据获取,它只应该在启动时获取一些数据,但我看到很多调用都是这样做的。我在服务构造函数中放了一些日志,我可以看到它被创建了很多次。
谢谢你的帮助!
node.js - 使用 tsyringe 将依赖项注入控制器时出错
我正在使用 express 和 tsyringe 进行依赖注入。
当我尝试在我的控制器上使用服务依赖项时,我收到一个错误UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addressService' of undefined in file addressController.ts
我搜索了几个视频和文章,但找不到解决它们的方法。我将在下面留下我的代码
地址存储库.ts
addressRepositoryImpl.ts
地址服务.ts
地址ServiceImpl.ts
地址控制器.ts
行错误: const result = this.addressService.getAddresses();
路线.ts