Repository navigation
Description
[READ] Step 1: Are you in the right place?
[REQUIRED] Step 2: Describe your environment
- Operating System version: windows 10
- Firebase SDK version: firebase: 9.1.3 ; firebase-admin: 10.0.0 ; firebase functions: 3.16.0
- Firebase Product: app
- Node.js version: 16
- NPM version: 7.5.6
[REQUIRED] Step 3: Describe the problem
After the migration to the new firebase-admin 10.0.0 and the new modular sdk imports, deploying the functions and running them works great.
However, when unit testing them, jest doesn't find the module packages and gives this as output:
FAIL spec/tests/app/functions/util-helpers.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
spec/tests/app/functions/util-helpers.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
PASS spec/tests/app/import-service/validators/inbetween-integer.validator.spec.ts
FAIL spec/tests/app/scoring/team-ranking.service.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
functions/src/utils/AcroSpecificRankingServiceBackend.ts
spec/tests/app/scoring/team-ranking.service.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
PASS spec/tests/app/import-service/validators/email.validator.spec.ts
FAIL spec/tests/app/generic-competitions/generic-acro-ranking.service.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
functions/src/utils/GenericRankingServiceBackend.ts
spec/tests/app/generic-competitions/generic-acro-ranking.service.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
PASS spec/tests/app/import-service/validators/positive-integer.validator.spec.ts
FAIL spec/tests/app/scoring/acro-specific-ranking.service.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
functions/src/utils/AcroSpecificRankingServiceBackend.ts
spec/tests/app/scoring/acro-specific-ranking.service.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
PASS spec/tests/app/import-service/validators/firestore-key.validator.spec.ts
PASS spec/tests/app/import-service/validators/length.validator.spec.ts
PASS spec/tests/app/import-service/validators/split-and-apply-multiple-validators.spec.ts
PASS spec/tests/app/helpers.service.spec.ts
PASS spec/tests/app/trampoline/judges-trampoline-service.spec.ts
PASS spec/tests/app/generic-competition-admin/exercises-import.spec.ts
● Console
console.log
Loading overlay was enabled:
at MockLoadingOverlayService.enableOld (spec/tests/stubs/loading-overlay.stub.ts:5:13)
console.log
text Adding exercises...
at MockLoadingOverlayService.enableOld (spec/tests/stubs/loading-overlay.stub.ts:6:13)
console.log
keepOnRouteDisable false
at MockLoadingOverlayService.enableOld (spec/tests/stubs/loading-overlay.stub.ts:7:13)
console.log
config {}
at MockLoadingOverlayService.enableOld (spec/tests/stubs/loading-overlay.stub.ts:8:13)
Summary of all failing tests
FAIL spec/tests/app/functions/util-helpers.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
spec/tests/app/functions/util-helpers.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
FAIL spec/tests/app/scoring/team-ranking.service.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
functions/src/utils/AcroSpecificRankingServiceBackend.ts
spec/tests/app/scoring/team-ranking.service.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
FAIL spec/tests/app/generic-competitions/generic-acro-ranking.service.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
functions/src/utils/GenericRankingServiceBackend.ts
spec/tests/app/generic-competitions/generic-acro-ranking.service.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
FAIL spec/tests/app/scoring/acro-specific-ranking.service.spec.ts
● Test suite failed to run
Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'
Require stack:
functions/src/index.ts
functions/src/utils/UtilHelpers.ts
functions/src/utils/AcroSpecificRankingServiceBackend.ts
spec/tests/app/scoring/acro-specific-ranking.service.spec.ts
1 | 'use strict';
2 |
> 3 | import { initializeApp, App } from 'firebase-admin/app';
| ^
4 | import { getFirestore } from 'firebase-admin/firestore';
5 |
6 | import 'firebase-functions';
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (functions/src/index.ts:3:1)
Activity
google-oss-bot commentedon Oct 31, 2021
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
[-]Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'[/-][+]Firebase-admin 10.0.0 modular imports: Cannot find module 'firebase-admin/app' from 'functions/src/index.ts'[/+]JFGHT commentedon Nov 1, 2021
ESLint is also having problems:
https://stackoverflow.com/questions/69746672/unable-to-resolve-path-to-module-firebase-admin-app-eslint
Robula commentedon Nov 1, 2021
Experiencing the same problem here:
Cannot find module 'firebase-admin/firestore' from 'src/common/batch.ts'whilst running unit tests.tsc --showconfigOutput:{ "compilerOptions": { "lib": [ "es2020" ], "module": "commonjs", "target": "es2020", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "outDir": "./lib" }, "files": [ // REDACTED ], "include": [ "src" ], "exclude": [ "**/__mocks__" ] }hiranya911 commentedon Nov 2, 2021
Issue with Jest is a known limitation in Jest's module resolver. See #1465 for more details including a link to the original bug report on the Jest project, and some workarounds. Good news is there's a good chance Jest might fix this issue in their next major version.
Issue with ESLint is a similar known problem with the corresponding tool. See #1359. You will most likely have to implement the workaround mentioned in that thread.