firebase / firebase-functions

Firebase SDK for Cloud Functions
https://firebase.google.com/docs/functions/
MIT License
1.02k stars 201 forks source link

Module '"firebase-functions/v1"' has no exported member 'onInit'. #1561

Closed marcusicaro closed 4 months ago

marcusicaro commented 4 months ago

Related issues

[REQUIRED] Version info

node: v18.18.0

firebase-functions:: ^4.7.0

firebase-tools:: ^12.7.0

firebase-admin:: 13.2.1

[REQUIRED] Test case

  const { GoogleGenerativeAI } = require('@google/generative-ai');
  const { defineSecret } = require('firebase-functions/params');
  const { onInit } = require('firebase-functions/v1');

  const apiKey = defineSecret('GOOGLE_API_KEY');

  let genAI;
  onInit(() => {
    genAI = new GoogleGenerativeAI(apiKey.value());
  })

[REQUIRED] Steps to reproduce

Just copy the example from the official documentation.

[REQUIRED] Expected behavior

To have a module named onInit

[REQUIRED] Actual behavior

TypeError: onInit is not a function at Object. (~) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Module.require (node:internal/modules/cjs/loader:1143:19) at require (node:internal/modules/cjs/helpers:119:18) at Object. (/home/marcus/Documents/monorepo/tarvos-web-serverless/functions/dist/src/lib/helpers/firebaseApiHelper.js:7:19) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)

Error: Functions codebase could not be analyzed successfully. It may have a syntax or runtime error

Were you able to successfully deploy your functions?

No.

google-oss-bot commented 4 months ago

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

ezequieltejada commented 4 months ago

I've tried the same but with v2 without luck:

import {onInit} from "firebase-functions/v2/core";
...
const stripePrivateKey = defineString("STRIPE_PRIVATE_KEY");
const stripeWebhookSecret = defineString("STRIPE_WEBHOOK_SECRET");
...
let stripe: Stripe;
let STRIPE_WEBHOOK_SECRET: string;
onInit(() => {
  stripe = new Stripe(stripePrivateKey.value());
  STRIPE_WEBHOOK_SECRET = stripeWebhookSecret.value();
});
....

And I'm getting this error: image

However if I hover the mouse over I get this: image

exaby73 commented 4 months ago

You should be importing it directly from firebase-functions. So @ezequieltejada your code sample would be:

import {onInit} from "firebase-functions";
...
const stripePrivateKey = defineString("STRIPE_PRIVATE_KEY");
const stripeWebhookSecret = defineString("STRIPE_WEBHOOK_SECRET");
...
let stripe: Stripe;
let STRIPE_WEBHOOK_SECRET: string;
onInit(() => {
  stripe = new Stripe(stripePrivateKey.value());
  STRIPE_WEBHOOK_SECRET = stripeWebhookSecret.value();
});
....

Let me know if this fixes your issue

ezequieltejada commented 4 months ago

I tried you suggestion and now it compiles, doesn't give an error. Thank you!!!

exaby73 commented 4 months ago

I'll close this issue as this is a problem with imports being incorrect initially :) Glad you were able to solve this. If you disagree with my closing and this issue is still reproducible even with the above imports, please let me know and I can reopen this isue following an investigation. Thank you