Error in handleMessage: RangeError: Maximum call stack size exceeded

Viewed 171

i am using 'kotlinx-serialization-runtime-js' in my firebase functions project. Everything so far went as expected. But since i am using:

val js = kotlinx.serialization.json.Json(JsonConfiguration.Stable)
             .kotlinx.serialization.stringify(result)

i can't run it local in the functions emulator. When starting it shows in the log:

Error in handleMessage: {"frb":{"cwd":"/home/drindt/.../functions","projectId":"c*******r-d*********t","triggerId":"","emulators":{},"socketPath":"/tmp/fire_emu_144610.sock"},"opts":{"nodeBinary":"/usr/bin/node","env":{"GOOGLE_APPLICATION_CREDENTIALS":"/home/drindt/.config/firebase/credentials.json"}}} => RangeError: Maximum call stack size exceeded: RangeError: Maximum call stack size exceeded
at extractTriggers (/home/drindt/.npm-packages/lib/node_modules/firebase-tools/lib/extractTriggers.js:2:32)

The recursive invocation of extractTriggers lead to the problem. I found in another file the note that when this error happen it's because other modules are exported than just function modules. I look into the kotlin compiled js files confirm that. If i remove the stringify from above everything works. It would be very nice if i could have some assistance to solve this problem. Thank you for taking your time to read and help me.

1 Answers

I'm having the same issue here, and since I'm not able to comment yet (not enough reputation), I'm posting my issue and it's solution here:

In short, the lesson for me was

Don't use export const in your index.ts for anything other than functions.

So for me it was showing the following error:

functions: Maximum call stack size exceeded
function was killed because it raised an unhandled error.

When I looked around in the firebase-debug.log file, I found that the error originated from extractTriggers.js which was located at:

/Users/$name$/.cache/firebase/tools/lib/node_modules/firebase-tools/lib/extractTriggers.js

But I still could not figure out what was the root cause, so I used console.log to print out the function names that were being called in extractTriggers.js:

i  firestore: Firestore Emulator logging to firestore-debug.log
i  ui: Emulator UI logging to ui-debug.log
i  functions: Watching "/Users/****/Desktop/.../firebase-cloud-functions/functions" for Cloud Functions...
>  ExtractTriggers for function options
>  ExtractTriggers for function allowedHeaders
>  ExtractTriggers for function 0
>  ExtractTriggers for function 1
>  ExtractTriggers for function 2
>  ExtractTriggers for function credentials
>  ExtractTriggers for function methods
>  ExtractTriggers for function origin
>  ExtractTriggers for function preflightContinue
>  ExtractTriggers for function firebaseAdmin
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
>  ExtractTriggers for function Promise
>  ExtractTriggers for function INTERNAL
>  ExtractTriggers for function firebase_
>  ExtractTriggers for function __esModule
>  ExtractTriggers for function credential
>  ExtractTriggers for function cert
>  ExtractTriggers for function refreshToken
>  ExtractTriggers for function applicationDefault
>  ExtractTriggers for function SDK_VERSION
⚠  functions: Maximum call stack size exceeded
⚠  Your function was killed because it raised an unhandled error.

When looking closely, I found out that the repetition started after the function name firebaseAdmin. And I had exported the firebase admin instance in my index.ts

import * as admin from 'firebase-admin';

//...

export const firebaseAdmin = admin;

Which was the root cause of it all, just removing that line, and using separate imports in all other files worked for me!

Related