Open cluxig opened 1 year ago
I have same issue. I am using absolute import in one place and relative import in another place for class and instanceof is failing because of that:
// httpError.ts
export class HttpError extends Error {...};
// foo.ts
import { HttpError } from '@errors'; // absolute import
export const foo = () => {
throw new HttpError(...);
}
// index.ts
import { HttpError } from './errors'; // relative import
try {
foo();
} catch(error){
console.log(error instanceof HttpError); // false
}
Confirm, that is a critical issue for library. Cannot rely on instances anymore.
Having non-unique singleton is critical.
This solution helped me to fix my app for tsconfig-paths issue https://github.com/nestjs/nest/issues/986#issuecomment-509295864
Imagine you have a class X:
and a class Y:
tsconfig.json
Than
X
andY
load their own classSimpleService
. This is problematic, if you use dependency injection, i.e. withtsyringe
(@singleton()
), or other Constructor-relatedType
token things, because now the Typeclass SimpleService
just exists two times at runtime. I think it's not related totsyringe
, because the registration-key is just the class-Type. Other frameworks will fail similarly.If you either always use the relative imports or always the absolute imports, just one loaded class exists at runtime.
Hence
tsconfig-paths
is probably doing something wrong. Both imports must lead to same loaded class at runtime.