Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firebase-admin 10.0.0 modular imports: Cannot find module 'firebase-admin/app' from 'functions/src/index.ts' #1481

Closed
LanderBeeuwsaert opened this issue Oct 31, 2021 · 4 comments

Comments

@LanderBeeuwsaert
Copy link

[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)
@google-oss-bot
Copy link

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

@LanderBeeuwsaert LanderBeeuwsaert changed the title 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' Oct 31, 2021
@JFGHT
Copy link

JFGHT commented Nov 1, 2021

@Robula
Copy link

Robula commented Nov 1, 2021

Experiencing the same problem here: Cannot find module 'firebase-admin/firestore' from 'src/common/batch.ts' whilst running unit tests.

"firebase-admin": "10.0.0",
"@types/jest": "27.0.2",
"jest": "27.3.1"
"ts-jest": "27.0.7"
"typescript": "4.4.4"

tsc --showconfig Output:

{
    "compilerOptions": {
        "lib": [
            "es2020"
        ],
        "module": "commonjs",
        "target": "es2020",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "outDir": "./lib"
    },
    "files": [
        // REDACTED
    ],
    "include": [
        "src"
    ],
    "exclude": [
        "**/__mocks__"
    ]
}

@hiranya911
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants