InversifyJS | lightweight inversion of control container | Dependency Injection library

 by   inversify TypeScript Version: v6.0.1 License: MIT

kandi X-RAY | InversifyJS Summary

kandi X-RAY | InversifyJS Summary

InversifyJS is a TypeScript library typically used in Programming Style, Dependency Injection applications. InversifyJS has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

InversifyJS is a lightweight inversion of control (IoC) container for TypeScript and JavaScript apps. An IoC container uses a class constructor to identify and inject its dependencies. InversifyJS has a friendly API and encourages the usage of the best OOP and IoC practices.

            kandi-support Support

              InversifyJS has a medium active ecosystem.
              It has 9998 star(s) with 702 fork(s). There are 135 watchers for this library.
              It had no major release in the last 12 months.
              There are 256 open issues and 593 have been closed. On average issues are closed in 73 days. There are 19 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of InversifyJS is v6.0.1

            kandi-Quality Quality

              InversifyJS has 0 bugs and 0 code smells.

            kandi-Security Security

              InversifyJS has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              InversifyJS code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              InversifyJS is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              InversifyJS releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of InversifyJS
            Get all kandi verified functions for this library.

            InversifyJS Key Features

            No Key Features are available at this moment for InversifyJS.

            InversifyJS Examples and Code Snippets

            No Code Snippets are available at this moment for InversifyJS.

            Community Discussions


            Clear inversify-js container and resolve new service instances
            Asked 2021-Mar-26 at 17:32

            I have a react-native application frontend using inversify-js.

            I've structured some service classes to use IOC (using an inversify container), such services intended to be shared as just one singleton instances among other services. They have an init/destroy method to help to clear up the services' internal state.

            The init/destroy mechanism works fine but on top of that, it would be nice to have a way to "clear" the inversify container singletons, to rebuild all my singleton services from scratch.





            Answered 2021-Mar-26 at 17:32

            The solution I suggest in the other answer is to simply ditch the current container and create a fresh instance, very clean and easy to understand.

            But then I look into the source code and find that such feature is already included.

            container.unbindAll() it is!

            This API unconditionally resets the container to a fresh state (almost fresh, explain later) without the need to create a new instance. Link to source code.

            I said "almost fresh" earlier, this is because container also has a less known (at least to me) feature called snapshots. Turns out you can even have multiple snapshots of binding setups stored in one container.

            Interesting 🤔. So if you make a snapshot of a empty container before registering any binding, and restore it later, it’s effective a "reset".

            Lastly, container.unload(containerModule) is totally valid, not hacky at all. May call this one selective reset 😂

            If you read the source code you’ll see, under the hood of all these methods, it’s all about modifying the internal _bindingDictionary. That’s where all the bindings are stored.



            Decorator to call a method before any other messes with "this" context
            Asked 2020-Nov-12 at 16:49
            Real problem

            I think I found my real problem, inversify and everything else works fine. In the original post I omitted some part of my code because I didn't think they were causing the problem.

            In my ICitiesRepo implementation I've a method ensureDb that makes sure to init some typeorm properties, since this method must be async I couldn't just call it in the constructor so should call it before any CRUD operation, then I created a decorator that has the purpose to call ensureDb before any other method in the class:



            Answered 2020-Nov-12 at 16:49

            You're almost there. You're getting undefined because this in your decorator is undefined and should be referring to an instantiated instance of your target. Changing that definition to a regular function call instead of an arrow function should do the trick.



            Application crash when calling container.get() in abstract class's constructor
            Asked 2020-May-01 at 13:07

            I'm currently trying to implement a base class which has multiple properties. All but one property are being injected via the constructor using InversifyJS's @Inject tag. I'm also getting an instance via the container.Get() function in the constructor. When I run my application everything is fine, but when the application recieves a request, the app crashes without an error.

            Base class



            Answered 2020-May-01 at 13:07

            In order for container.get() to work, must be bound to the container at some point. In your composition root (where you set up your container) you can create this binding:



            Register .NET Core singleton service via annotation
            Asked 2020-Apr-25 at 11:17

            Is there any way to autowire (automatically register) singleton services to a C# DI container (Microsoft.Extensions.DependencyInjection) by annotation?

            E.g. something like ProvidedIn option in @Injectable() annotation in Angular, @injectable() annotation in InversifyJS (Node.js), autowiring in Spring (Java) or autowiring in Symfony Framework (PHP)?

            See Angular example below:



            Answered 2020-Apr-25 at 11:08

            No, and that's actually by-design.

            The whole point of DI is that there are no surprises with how your program is configured: everything you configure in ConfigureServices (your in your case, SetupDi) is exactly what you get at runtime. By using attributes to configure DI then that would introduce "non-local effects" and it would be much harder to track-down bugs introduced by incorrect or misconfigured dependencies caused by an errant attribute.

            (To that extent, I disagree with Angular's design - but that's off-topic).

            (I also feel that .NET Core's DI system is also imperfect - too many necessary details are hidden behind DI injection extension-methods that you need to use ILSpy or Reflector to peer into).

            As a workaround, you can "test" your DI services at app startup to ensure everything is configured by reflecting over every IService in your project and trying to instantiate the implementation.

            Here's the code I use in my ASP.NET and ASP.NET Core projects to verify DI is thoroughly configured:


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install InversifyJS

            You can get the latest release and the type definitions using your preferred package manager:. ❕Hint! If you want to use a more type-safe version of reflect-metadata, try @abraham/reflection. The InversifyJS type definitions are included in the inversify npm package. :warning: Important! InversifyJS requires TypeScript >= 4.4 and the experimentalDecorators, emitDecoratorMetadata, types and lib compilation options in your tsconfig.json file.
            Reflect metadata
            Promise (Only required if using provider injection)
            Proxy (Only required if using activation handlers)


            If you are experience any kind of issues we will be happy to help. You can report an issue using the issues page or the chat. You can also ask questions at Stack overflow using the inversifyjs tag. If you want to share your thoughts with the development team or join us you will be able to do so using the official the mailing list. You can check out the wiki to learn more about InversifyJS internals.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone inversify/InversifyJS

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Consider Popular Dependency Injection Libraries


            by golang


            by google


            by inversify


            by square


            by google

            Try Top Libraries by inversify


            by inversifyTypeScript


            by inversifyTypeScript


            by inversifyTypeScript


            by inversifyTypeScript


            by inversifyTypeScript