microsoft / tsyringe

Lightweight dependency injection container for JavaScript/TypeScript
MIT License
5.19k stars 172 forks source link

Fails to resolve dependencies with Vite #240

Open leo1553 opened 7 months ago

leo1553 commented 7 months ago

Describe the bug

When trying to resolve a token with one or more dependencies, the error TypeInfo not known for "Bar" is thrown.

To Reproduce

Reproduced on StackBlitz

Sample code:

import '@abraham/reflection';

import { container, singleton } from 'tsyringe';

@singleton()
export class Foo {
  constructor() {}
}

@singleton()
export class Bar {
  constructor(public foo: Foo) {}
}

console.log(container.resolve(Foo)); // Works
console.log(container.resolve(Bar)); // Throws Uncaught Error: TypeInfo not known for "Bar"

Tested with:

{
  "scripts": {
    "start": "vite",
    "build": "tsc && vite build"
  }
}

Expected behavior

The token Bar should have been successfully resolved with its Foo dependency set.

Versions

{
  "devDependencies": {
    "typescript": "^4.9.5",
    "vite": "^5.2.9"
  },
  "dependencies": {
    "@abraham/reflection": "^0.12.0",
    "tsyringe": "^4.8.0"
  }
}

References

leo1553 commented 7 months ago

This can be fixed using @rollup/plugin-typescript: