deepkit-framework
deepkit-framework copied to clipboard
[Bug] DI Initialization Fails when the Name of a Type from a Library is duplicated with DOM
Reproduce
import { App } from '@deepkit/app';
import { Element } from 'cheerio';
class Service {
parse(ele: Element): void {}
}
new App({
providers: [Service],
}).run();
Here Element can be Node, Document or anything from cheerio with a duplicated name with DOM.
Error: Could not resolve function of object Service via () => Element: ReferenceError: Element is not defined
at resolveFunction (/home/.../demo/node_modules/@deepkit/type/src/reflection/processor.ts:1677:15)
at Processor.loop (/home/.../demo/node_modules/@deepkit/type/src/reflection/processor.ts:561:47)
at Processor.runProgram (/home/.../demo/node_modules/@deepkit/type/src/reflection/processor.ts:379:25)
at Processor.run (/home/.../demo/node_modules/@deepkit/type/src/reflection/processor.ts:367:21)
at Processor.reflect (/home/.../demo/node_modules/@deepkit/type/src/reflection/processor.ts:357:27)
at resolveRuntimeType (/home/.../demo/node_modules/@deepkit/type/src/reflection/processor.ts:130:34)
at Function.from (/home/.../demo/node_modules/@deepkit/type/src/reflection/reflection.ts:1211:114)
at Injector.createFactory (/home/.../demo/node_modules/@deepkit/injector/src/injector.ts:464:49)
at Injector.buildProvider (/home/.../demo/node_modules/@deepkit/injector/src/injector.ts:363:28)
at Injector.build (/home/.../demo/node_modules/@deepkit/injector/src/injector.ts:291:37)
Workaround
import { App } from '@deepkit/app';
import * as cheerio from 'cheerio';
interface Element extends cheerio.Element {}
class Service {
parse(ele: Element): void {}
}
new App({
providers: [Service],
}).run();