Home > Software design >  Firebase Functions ENOENT: no such file or directory, open 'HttpsErrorImpl'
Firebase Functions ENOENT: no such file or directory, open 'HttpsErrorImpl'

Time:02-01

I'm fighting with this issue for over 3 days. I have no idea what is happening.

Firebase Functions throws error only when I try to use Emulator. I try to execute this function in useEffect hook. Again, when I call deployed Cloud Functions everything seems fine, unfortunately in case of using Emulator things don't want to go so well.

const resolvePromise = async () => {
      functions.useEmulator("https://0.0.0.0:5001");
      const query = functions.httpsCallable("helloWorld");
      query()
        .then((result) => console.log(result))
        .catch((err) => console.log(err));
    };

I receive this useless (for me) error.

Error: ENOENT: no such file or directory, open 'HttpsErrorImpl@http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false'
    at Object.openSync (node:fs:585:3)
    at Object.readFileSync (node:fs:453:35)
    at getCodeFrame (Z:\repo\PTCG_Marketplace\node_modules\metro\src\Server.js:1296:18)  
    at Z:\repo\PTCG_Marketplace\node_modules\metro\src\Server.js:1367:24
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (Z:\repo\PTCG_Marketplace\node_modules\metro\src\Server.js:146:24)
    at _next (Z:\repo\PTCG_Marketplace\node_modules\metro\src\Server.js:168:9)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

internal
at HttpsErrorImpl@http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:197178:29 in <unknown>
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:197273:29 in _errorForResponse
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:197751:39 in <unknown>
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:170357:26 in step
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:170287:21 in <unknown>
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:170241:31 in fulfilled
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:31526:15 in tryCallOne
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:31627:26 in <unknown>
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:31955:16 in _callTimer
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:31994:16 in _callImmediatesPass
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:32211:32 in callImmediates
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:3457:34 in __callImmediates
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:3236:33 in <unknown>
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:3440:14 in __guard
at http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false:3235:20 in flushedQueue

This is all the text which I can see after visiting

http://192.168.0.104:19000/index.bundle -- https://pastebin.com/ggsCMN0W http://192.168.0.104:19000/index.bundle?platform=android&dev=true&hot=false&minify=false -- https://pastebin.com/LSeufs8H

It don't make any sense for me. At second address it seems like it's correlated to metro dependency so I updated it, it didn't work.

Any ideas? Thanks in advance :D

Edit 1: All errors are logged at client site, it seems like client can't even call emulator.

CodePudding user response:

Couple of potential issues here:

  1. Assuming you're using the latest version of Firebase, functions is actually a method: firebase.functions().useEmulator("localhost", 5001); - Note the () after functions. See docs for more info.
  2. Maybe you've already done this, but have you made sure that the functions emulator is actually running and connectable on port 5001)? Could be useful to test it via Postman or similar.
  3. Make sure you're using the correct IP address for the functions emulator given your setup. 0.0.0.0 probably doesn't map where you want it to... assuming the app is running locally and the functions emulator is too, try 127.0.0.1 or "localhost" ... this answer has more options to troubleshoot.

CodePudding user response:

I am not sure if it is your case, but I had a function:

exports.findUserInAuth = functions.https.onCall((data, context) => {
  let field = data.field;
  let value = data.value;

  if (!field || !value) {
    return false;
  }

  if (field === "email") {
    return admin.auth().getUserByEmail(value);
  }
});

This one returns a promise, I had to change it to wait for the result before doing a return and problem solved...

exports.findUserInAuth = functions.https.onCall((data, context) => {
  let field = data.field;
  let value = data.value;

  if (!field || !value) {
    return false;
  }

  if (field === "email") {
    admin.auth().getUserByEmail(value).then((result) => {
        return result;
      })
      .catch((error) => {
        if (error.code === "auth/user-not-found") {
          return "Email or Password is incorrect";
        }

        return `${error.code} ${error.message}`;
      });
  }

  return false;
});
  •  Tags:  
  • Related