Skip to content

Cannot find module 'firebase-admin/app' #1488

Open

Description

@sankalpsans

package.json requirements look like this –

  "dependencies": {
    "@sentry/node": "^5.30.0",
    "body-parser": "1.19.0",
    "express": "^4.17.1",
    "firebase-admin": "10.0.0",
    "mysql": "^2.18.1",
    "pug": "3.0.2"
  }

node_modules has the corresponding module in the path ~/node_modules/firebase-admin/lib/app

Node code reads as –

const initializeApp  = require('firebase-admin/app');

And when the app is run, the following stacktrace emerges.

 Error: Cannot find module 'firebase-admin/app'
     at Function.Module._resolveFilename (module.js:547:15)
     at Function.Module._load (module.js:474:25)
     at Module.require (module.js:596:17)
     at require (internal/module.js:11:18)
     at Object.<anonymous> (/var/www/html/project/backend/main.js:16:24)
     at Module._compile (module.js:652:30)
     at Object.Module._extensions..js (module.js:663:10)
     at Module.load (module.js:565:32)
     at tryModuleLoad (module.js:505:12)
     at Function.Module._load (module.js:497:3)

Activity

  1. google-oss-bot commented on Nov 7, 2021

    @google-oss-bot

    I found a few problems with this issue:

    • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
    • This issue does not seem to follow the issue template. Make sure you provide all the required information.
  2. shalomhalbert commented on Nov 7, 2021

    @shalomhalbert

    I have the same issue. For some reason, running npm install resolved the error when running mocha tests from a non-debug terminal instance in Visual Studio Code, but running mocha tests from a debug terminal instance still yields this error. The node_modules package is definitely installed.

  3. shalomhalbert commented on Nov 7, 2021

    @shalomhalbert

    Solved it by ignoring the import recommendation. Instead of

    'use strict';
    
    const { initializeApp } = require('firebase-admin/app');
    const { getFirestore, Timestamp, GeoPoint } = require('firebase-admin/firestore');
    
    exports.initializeApp = () => initializeApp();
    exports.getFirestore = () => getFirestore();
    exports.Timestamp = Timestamp;
    exports.GeoPoint = GeoPoint;
    

    I am now using what existed before v10:

    'use strict';
    
    const firebaseAdmin = require('firebase-admin');
    
    exports.initializeApp = () => firebaseAdmin.initializeApp();
    exports.getFirestore = () => firebaseAdmin.firestore();
    exports.Timestamp = firebaseAdmin.firestore.Timestamp;
    exports.GeoPoint = firebaseAdmin.firestore.GeoPoint;
    
  4. hiranya911 commented on Nov 8, 2021

    @hiranya911
    Contributor

    Code given above worked fine when executed through Node.js 12. Here's the output of the execution with an added console.log statement:

    % cat main.js 
    'use strict';
    
    const { initializeApp } = require('firebase-admin/app');
    const { getFirestore, Timestamp, GeoPoint } = require('firebase-admin/firestore');
    
    exports.initializeApp = () => initializeApp();
    exports.getFirestore = () => getFirestore();
    exports.Timestamp = Timestamp;
    exports.GeoPoint = GeoPoint;
    
    console.log(exports);
    
    
    % node main.js 
    {
      initializeApp: [Function],
      getFirestore: [Function],
      Timestamp: [class Timestamp],
      GeoPoint: [class GeoPoint]
    }
    

    Also I can do the following on a Node.js REPL:

    % node
    Welcome to Node.js v12.22.0.
    Type ".help" for more information.
    > const { initializeApp } = require('firebase-admin/app')
    undefined
    > initializeApp
    [Function: initializeApp]
    

    May be somebody can share a minimal and complete repro of the issue? Something that we can download and run to repro the problem?

  5. sankalpsans commented on Nov 9, 2021

    @sankalpsans
    Author

    @hiranya911 I am currently using node v17.0.1. Is it known to not work with this? Is the solution to downgrade to v12 instead?

    Edit – I can confirm that downgrading to v12 did solve the issue.

  6. sankalpsans commented on Nov 9, 2021

    @sankalpsans
    Author

    @shalbert94 Importing the top level module and then accessing internal things like you suggested works.
    That is exactly the workaround that I proceeded with.

    So, either the docs need updating, or the library itself does.

  7. hiranya911 commented on Nov 9, 2021

    @hiranya911
    Contributor

    Works fine on Node 17 too:

    $ node
    Welcome to Node.js v17.0.1.
    Type ".help" for more information.
    > const { initializeApp }  = require('firebase-admin/app')
    undefined
    > initializeApp
    [Function: initializeApp]
    

    This is most likely a problem specific to your environment/implementation. We will need a complete, minimal repro to know for sure.

    As fas as our library is concerned, we correctly declare the new module entry points in our package.json file:

    "exports": {
    ".": "./lib/index.js",
    "./app": {
    "require": "./lib/app/index.js",
    "import": "./lib/esm/app/index.js"
    },

    All Node.js versions 12 and up, should support it.

  8. hiranya911 commented on Nov 9, 2021

    @hiranya911
    Contributor

    Edit – I can confirm that downgrading to v12 did solve the issue.

    Assuming there are no other libraries, frameworks or custom module loaders in play, more likely explanation is your Node 17 setup was somehow loading an old version of firebase-admin (e.g. v9), that didn't have the new module exports. Changing to Node 12 pulled in the latest version of the library, and picked up the new entry points. Just a guess.

  9. hiranya911 commented on Nov 9, 2021

    @hiranya911
    Contributor

    I pushed a copy of my attempt to repro this issue to https://github.com/firebase/firebase-admin-node/tree/hkj-repro-1488/nodetest. Feel free to play with it and see if you can still repro the problem.

  10. Bandit commented on Nov 9, 2021

    @Bandit

    I'm also getting this error when using the snippet provided:

    import { initializeApp, applicationDefault } from 'firebase-admin/app';

    => Error: Cannot find module 'firebase-admin/app'

    Node v14.16.1

    Confirming that using import firebaseAdmin from 'firebase-admin' resolves it, however that's a big headache. For now I've given up on this approach and gone back to using import Firestore from '@google-cloud/firestore' (and it looks like firebase-admin just wraps that anyway so no harm I guess?)

  11. hiranya911 commented on Nov 9, 2021

    @hiranya911
    Contributor

    @Bandit can you share a complete repro with us? Something similar to the complete example I've shared above in my last comment.

  12. hiranya911 commented on Nov 9, 2021

    @hiranya911
    Contributor

    Folks who are seeing this error also please check their library version using one of the following methods:

    Using npm ls

    $ npm ls firebase-admin       
    mods@1.0.0 
    └── firebase-admin@10.0.0
    

    Directly checking the package.json of the library

    $ grep "version" node_modules/firebase-admin/package.json
      "version": "10.0.0"
    

    If the version is indeed 10.x or higher, please share a complete repro that we can run.

  13. Bandit commented on Nov 9, 2021

    @Bandit

    Confirmed I'm using firebase-admin@10.0.0

    I'll see about building a repro when I get some time, but I'm assuming it's related to Vite (using Vite + Sveltekit). Perhaps fixed by this hot-off-the-press PR vitejs/vite#5593? Or maybe it's this bug vitejs/vite#4340? Bit beyond my pay grade

  14. hiranya911 commented on Nov 9, 2021

    @hiranya911
    Contributor

    We encountered the issue in Vite during alpha testing. See #1340 (also vitejs/vite#3953). It's a bug in their module resolver. We cannot do much about that on our end, but it sounds like the PR you've linked above is expected to fix it.

    Other platforms with known issues include Jest and ESLint (see #1481)

  15. 14 remaining items

  16. HelderSi commented on Jan 9, 2022

    @HelderSi

    I started to use firebase-admin@^10.0.1 and I had this error when running jest tests. It couldn't map "firebase-admin/app" to "firebase-admin/lib/app" as expected. So I have mapped this manually on jest.config.ts:

    import { pathsToModuleNameMapper } from 'ts-jest/utils';
    import { compilerOptions } from './tsconfig.json';
    
    ...
    export default {
     ...
     moduleNameMapper: pathsToModuleNameMapper(
        {
          ...compilerOptions.paths,
          'firebase-admin/*': ['node_modules/firebase-admin/lib/*'],
        },
        {
          prefix: '<rootDir>',
        },
      ),
    ...
    }
    

    That worked for me.

    And just to note, my tsconfig.json is like this:

    {
      "compilerOptions": {
        ...
        "baseUrl": ".",
        "paths": {
          "modules/*": [
            "src/modules/*"
          ],
          "shared/*": [
            "src/shared/*"
          ],
        }
      }
    }
    
  17. alxcholley commented on Jan 24, 2022

    @alxcholley
  18. fflores97 commented on Jan 26, 2022

    @fflores97

    Similarly to @HelderSi, I had to do a moduleNameMapper config, but I'm using yarn v2 PnP, so my config looks like this:

    import { pathsToModuleNameMapper } from "ts-jest/utils";
    
    export default {
      preset: "ts-jest",
      testEnvironment: "node",
      modulePaths: ["<rootDir>/src"],
      moduleNameMapper: pathsToModuleNameMapper({
        "firebase-admin/*": ["firebase-admin/lib/*"],
      }),
    };
    
  19. Enragedsaturday commented on Feb 2, 2022

    @Enragedsaturday

    For some reason npm pulled v9 for me, I manually edited my package.json (remember it's the one in the functions folder):
    "firebase-admin": "^10.0.2",
    All imports are working correctly now.

  20. artstylee commented on Feb 2, 2022

    @artstylee

    backend package json

    {
      "name": "back",
      "version": "1.0.0",
      "description": "",
      "type": "module",
      "main": "index.js",
      "dependencies": {
        "bcrypt": "^5.0.1",
        "cookie-parser": "^1.4.5",
        "cors": "^2.8.5",
        "dotenv": "^10.0.0",
        "express": "^4.17.1",
        "express-validator": "^6.13.0",
        "firebase-admin": "^10.0.2",
        "jsonwebtoken": "^8.5.1",
        "mongodb": "^4.1.3",
        "mongoose": "^6.0.12",
        "multer": "^1.4.4",
        "nodemon": "^2.0.14",
        "socket.io": "^4.4.0"
      },
      "scripts": {
        "back": "nodemon index.js",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    

    node version
    v16.13.1
    Снимок

    firebase library package.json
    "version": "10.0.2",

  21. mattisx commented on Feb 18, 2022

    @mattisx

    Deleting node_modules, package-lock.json, and running npm cache clean --force fixed this for me on Node 16.14.

  22. Benjamin-Lee commented on Mar 9, 2022

    @Benjamin-Lee

    For anyone else looking for things to try, learn from my mistake. When upgrading to firebase-admin@10, I accidentally made it a dev dependency, thus triggering this error.

  23. Muhkol commented on Mar 12, 2022

    @Muhkol

    I did have the same issue with not finding the module 'firebase-admin/app'. Ended up accessing firebase products with suggestions from others at the top of this thread. Tried it again the default way from google docs , regardless of the error 'module not found' everything still works fine and able to use firebase product (firestore). You can IGNORE the error and run your code. I am node version 12

  24. lneninger commented on Mar 25, 2022

    @lneninger

    @Benjamin-Lee that fixed my issue. Thanks for share your error resolution.

  25. fbukevin commented on Jun 14, 2022

    @fbukevin

    This issue is still not solved. Either I use node version 14.6.0 (npm v7.8.0) or version 18.1.0 (npm v8.8.0).

  26. March-mitsuki commented on Dec 7, 2022

    @March-mitsuki

    I'm using node v18.12.0 with yarn and vscode. Runing yarn cache clean --all then reinstalling yarn install, and restarting vsode fixed this for me.

  27. jasonburrows commented on Mar 9, 2023

    @jasonburrows

    Still experiencing this with firebase-admin@11.5.0 and node@18.15.0.

    Clearing the cache and re-installing did not help.

    I have tried the general import:

    import * as firebaseAdmin from 'firebase-admin';

    ...but I can't get at the getAuth function.

    const auth = firebaseAdmin.auth.getAuth(app);

    Gives:

    Property 'getAuth' does not exist on type '(app?: App | undefined) => Auth'.

  28. lahirumaramba commented on Mar 9, 2023

    @lahirumaramba
    Member

    @jasonburrows If you are using the namespaces you should use firebaseAdmin.auth(app).

    I ran a few tests and it seems like import * as firebaseAdmin from 'firebase-admin' imports all the named exports... so you specifically need to access the default export. I am unsure why this happens or what the correct fix for this. I will need to investigate the issue further.

    import * as firebaseAdmin from 'firebase-admin';
    
    const auth = firebaseAdmin.default.auth();
    
    [Module: null prototype] {
      default: <ref *1> FirebaseNamespace {
        __esModule: true,
        credential: {
          cert: [Function: cert],
          refreshToken: [Function: refreshToken],
          applicationDefault: [Function: applicationDefault]
        },
        SDK_VERSION: '11.5.0',
        Promise: [Function: Promise],
        INTERNAL: FirebaseNamespaceInternals { appStore: [AppStore] },
        default: [Circular *1]
      }
    }
    

    In the meantime, I would also suggest using the new modular syntax:

    import { initializeApp, App } from 'firebase-admin/app';
    import { getAuth, UserRecord } from 'firebase-admin/auth';
    
    const app: App = initializeApp();
    
    const token: string = await getAuth().createCustomToken('alice');
    

    https://firebase.google.com/docs/admin/migrate-node-v10

  29. KariNarhi28 commented on Aug 6, 2025

    @KariNarhi28

    This issue seems to be still ongoing, I get this when trying to deploy:

    ✔  functions: Finished running predeploy script.
    i  functions: preparing codebase default for deployment
    i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
    i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
    i  artifactregistry: ensuring required API artifactregistry.googleapis.com is enabled...
    i  functions: Loading and analyzing source code for codebase default to determine what to deploy
    Serving at port 8542
    
    Error: Cannot find module 'firebase-admin/app'
    Require stack:
    - /myProject/functions/lib/functions/src/index.js
    - /myProject/functions/node_modules/firebase-functions/lib/runtime/loader.js
    - /myProject/functions/node_modules/firebase-functions/lib/bin/firebase-functions.js
        at Function._resolveFilename (node:internal/modules/cjs/loader:1401:15)
        at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)
        at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)
        at Function._load (node:internal/modules/cjs/loader:1211:37)
        at TracingChannel.traceSync (node:diagnostics_channel:322:14)
        at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
        at Module.require (node:internal/modules/cjs/loader:1487:12)
        at require (node:internal/modules/helpers:135:16)
        at Object.<anonymous> (/myProject/functions/lib/functions/src/index.js:7:15)
        at Module._compile (node:internal/modules/cjs/loader:1730:14) {
      code: 'MODULE_NOT_FOUND',
      requireStack: [
        '/myProject/functions/lib/functions/src/index.js',
        '/myProject/functions/node_modules/firebase-functions/lib/runtime/loader.js',
        '/myProject/functions/node_modules/firebase-functions/lib/bin/firebase-functions.js'
      ]
    }

    I do have latest version of firebase-admin installed:

    "dependencies": {
       "firebase-admin": "^13.4.0",
       "firebase-functions": "^6.4.0"
     },
    

    Initialization:

    import { setGlobalOptions } from 'firebase-functions';
    import { initializeApp } from 'firebase-admin/app';
    
    setGlobalOptions({ maxInstances: 10, region: 'europe-west1' });
    initializeApp();

    I tried removing package-lock.json and node_modules and reinstall, but it didn't help.

  30. KariNarhi28 commented on Aug 7, 2025

    @KariNarhi28

    OK, I think I managed to fix this on my own laptop.

    Check your whole path under where you keep your code for any special letters or symbols.

    Especially umlaut letters like ö, ä, ü.

    I had an ö-letter in my path on a top level so I changed the name to something else and now the deploy works.

    Might not be the actual reason but I was getting the mentioned error and after changing the project-path, it no longer gives error.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions