Skip to content

Commit 5de2ac3

Browse files
sonukapoorAndrewKushnir
authored andcommitted
fix(upgrade): add try/catch when downgrading injectables (#38671)
This commit improves the error thrown by the downgrade module with a more descriptive message on why the downgrade is failing. Closes #37579 PR Close #38671
1 parent 7669bd8 commit 5de2ac3

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

packages/upgrade/src/common/src/downgrade_injectable.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,12 @@ export function downgradeInjectable(token: any, downgradedModule: string = ''):
7979

8080
validateInjectionKey($injector, downgradedModule, injectorKey, attemptedAction);
8181

82-
const injector: Injector = $injector.get(injectorKey);
83-
return injector.get(token);
82+
try {
83+
const injector: Injector = $injector.get(injectorKey);
84+
return injector.get(token);
85+
} catch (err) {
86+
throw new Error(`Error while ${attemptedAction}: ${err.message || err}`);
87+
}
8488
};
8589
(factory as any)['$inject'] = [$INJECTOR];
8690

packages/upgrade/src/common/test/downgrade_injectable_spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,16 @@ describe('downgradeInjectable', () => {
4848
expect(factory(mockNg1Injector)).toEqual('service value');
4949
expect(mockNg2Injector.get).toHaveBeenCalledWith('someToken');
5050
});
51+
52+
it('should mention the injectable\'s name in the error thrown when failing to retrieve injectable',
53+
() => {
54+
const factory = downgradeInjectable('someToken');
55+
expect(factory).toEqual(jasmine.any(Function));
56+
expect((factory as any).$inject).toEqual([$INJECTOR]);
57+
58+
const {mockNg1Injector, mockNg2Injector} = setupMockInjectors();
59+
mockNg2Injector.get.and.throwError('Mock failure');
60+
expect(() => factory(mockNg1Injector))
61+
.toThrowError(/^Error while instantiating injectable 'someToken': Mock failure/);
62+
});
5163
});

0 commit comments

Comments
 (0)