From 6ecf9425297fbf0203f7f7ab9709e9c99a9b5957 Mon Sep 17 00:00:00 2001 From: Christina Holland Date: Tue, 25 Apr 2023 14:25:01 -0700 Subject: [PATCH 1/4] Fix getApp error message --- packages/app/src/api.test.ts | 6 +++++- packages/app/src/api.ts | 2 +- packages/app/src/internal.test.ts | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/app/src/api.test.ts b/packages/app/src/api.test.ts index c44c38cedc7..69ebefb1d15 100644 --- a/packages/app/src/api.test.ts +++ b/packages/app/src/api.test.ts @@ -199,9 +199,13 @@ describe('API tests', () => { expect(getApp(appName)).to.equal(app); }); - it('throws retrieving a non existing App', () => { + it('throws retrieving a non existing App (custom name)', () => { expect(() => getApp('RandomName')).throws(/No Firebase App 'RandomName'/); }); + + it('throws retrieving a non existing App (default name)', () => { + expect(() => getApp()).throws(/No Firebase App/); + }); }); describe('getApps', () => { diff --git a/packages/app/src/api.ts b/packages/app/src/api.ts index b76a00e2d1b..d43c4ac65c2 100644 --- a/packages/app/src/api.ts +++ b/packages/app/src/api.ts @@ -202,7 +202,7 @@ export function initializeApp( */ export function getApp(name: string = DEFAULT_ENTRY_NAME): FirebaseApp { const app = _apps.get(name); - if (!app && name === DEFAULT_ENTRY_NAME) { + if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) { return initializeApp(); } if (!app) { diff --git a/packages/app/src/internal.test.ts b/packages/app/src/internal.test.ts index b9f9b584553..47ea2e80c40 100644 --- a/packages/app/src/internal.test.ts +++ b/packages/app/src/internal.test.ts @@ -30,6 +30,7 @@ import { _getProvider, _removeServiceInstance } from './internal'; +import { logger } from './logger'; declare module '@firebase/component' { interface NameServiceMapping { @@ -60,10 +61,12 @@ describe('Internal API tests', () => { it('does NOT throw registering duplicate components', () => { const app = initializeApp({}) as FirebaseAppImpl; const testComp = createTestComponent('test'); + const debugStub = stub(logger, 'debug'); _addComponent(app, testComp); expect(() => _addComponent(app, testComp)).to.not.throw(); + expect(debugStub).to.be.called; expect(app.container.getProvider('test').getComponent()).to.equal( testComp ); From 0036cf84cb4e20e28b12c6bcf951a2e05fd046d1 Mon Sep 17 00:00:00 2001 From: Christina Holland Date: Tue, 25 Apr 2023 14:27:50 -0700 Subject: [PATCH 2/4] update function name --- packages/app/src/errors.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/errors.ts b/packages/app/src/errors.ts index 6cd50e90942..6715ef3284a 100644 --- a/packages/app/src/errors.ts +++ b/packages/app/src/errors.ts @@ -34,7 +34,7 @@ export const enum AppError { const ERRORS: ErrorMap = { [AppError.NO_APP]: "No Firebase App '{$appName}' has been created - " + - 'call Firebase App.initializeApp()', + 'call initializeApp()', [AppError.BAD_APP_NAME]: "Illegal App name: '{$appName}", [AppError.DUPLICATE_APP]: "Firebase App named '{$appName}' already exists with different options or config", From a6796dab46fdd3314848b7a45ad548b8728ad680 Mon Sep 17 00:00:00 2001 From: Christina Holland Date: Tue, 25 Apr 2023 14:35:00 -0700 Subject: [PATCH 3/4] Add test, update error message --- packages/app/src/api.test.ts | 7 +++++++ packages/app/src/errors.ts | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/app/src/api.test.ts b/packages/app/src/api.test.ts index 69ebefb1d15..ab361df6ff1 100644 --- a/packages/app/src/api.test.ts +++ b/packages/app/src/api.test.ts @@ -206,6 +206,13 @@ describe('API tests', () => { it('throws retrieving a non existing App (default name)', () => { expect(() => getApp()).throws(/No Firebase App/); }); + + it('does not throw on a non existing App (default name) if a defaults object exists', () => { + global.__FIREBASE_DEFAULTS__ = { config: { apiKey: 'abcd' } }; + const app = getApp(); + expect(app.options.apiKey).to.equal('abcd'); + global.__FIREBASE_DEFAULTS__ = undefined; + }); }); describe('getApps', () => { diff --git a/packages/app/src/errors.ts b/packages/app/src/errors.ts index 6715ef3284a..25582398663 100644 --- a/packages/app/src/errors.ts +++ b/packages/app/src/errors.ts @@ -34,7 +34,7 @@ export const enum AppError { const ERRORS: ErrorMap = { [AppError.NO_APP]: "No Firebase App '{$appName}' has been created - " + - 'call initializeApp()', + 'call initializeApp() first', [AppError.BAD_APP_NAME]: "Illegal App name: '{$appName}", [AppError.DUPLICATE_APP]: "Firebase App named '{$appName}' already exists with different options or config", From 5bf64d27002e0e402abe5dc30165096bd016168e Mon Sep 17 00:00:00 2001 From: Christina Holland Date: Wed, 26 Apr 2023 10:13:44 -0700 Subject: [PATCH 4/4] Add changeset --- .changeset/funny-ways-carry.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/funny-ways-carry.md diff --git a/.changeset/funny-ways-carry.md b/.changeset/funny-ways-carry.md new file mode 100644 index 00000000000..b1340649384 --- /dev/null +++ b/.changeset/funny-ways-carry.md @@ -0,0 +1,5 @@ +--- +'@firebase/app': patch +--- + +Make the error more helpful when `getApp()` is called before `initializeApp()`.