deepkit / deepkit-framework

A new full-featured and high-performance TypeScript framework
https://deepkit.io/
MIT License
3.2k stars 123 forks source link

[Bug] Factory Providers Cannot Use `Inject<Type, Token>` #240

Closed Char2sGu closed 2 years ago

Char2sGu commented 2 years ago
import { App } from "@deepkit/app";
import { Inject } from "@deepkit/injector";

new App({
  providers: [
    { provide: "null", useValue: null },
    { provide: "test", useFactory: (dep: Inject<null, "null">) => dep },
  ],
}).run();
ts-node src/app.ts

DependenciesUnmetError: Undefined dependency "dep: Inject<null, 'null'>" of useFactory(?). Type has no provider in no scope.
    at Injector.createFactoryProperty (/.../project/node_modules/@deepkit/injector/src/injector.ts:625:19)
    at Injector.buildProvider (/.../project/node_modules/@deepkit/injector/src/injector.ts:374:32)
    at Injector.build (/.../project/node_modules/@deepkit/injector/src/injector.ts:291:37)
    at new Injector (/.../project/node_modules/@deepkit/injector/src/injector.ts:201:14)
    at RootAppModule.getOrCreateInjector (/.../project/node_modules/@deepkit/injector/src/module.ts:356:25)
    at InjectorContext.getInjector (/.../project/node_modules/@deepkit/injector/src/injector.ts:858:23)
    at InjectorContext.getRootInjector (/.../project/node_modules/@deepkit/injector/src/injector.ts:862:21)
    at ServiceContainer.process (/.../project/node_modules/@deepkit/app/src/service-container.ts:95:30)
    at ServiceContainer.getInjectorContext (/.../project/node_modules/@deepkit/app/src/service-container.ts:115:14)
    at App.getInjectorContext (/.../project/node_modules/@deepkit/app/src/app.ts:259:38)
marcj commented 2 years ago

Fixed in https://github.com/deepkit/deepkit-framework/commit/7fe644a02b5da4ee0a73f6d87e14d6648b939540