firebase-functions icon indicating copy to clipboard operation
firebase-functions copied to clipboard

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

Open marcusicaro opened this issue 1 year ago • 4 comments

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.

marcusicaro avatar May 02 '24 15:05 marcusicaro

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

google-oss-bot avatar May 02 '24 15:05 google-oss-bot

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

ezequieltejada avatar May 16 '24 17:05 ezequieltejada

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

exaby73 avatar May 17 '24 06:05 exaby73

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

ezequieltejada avatar May 18 '24 14:05 ezequieltejada

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

exaby73 avatar May 22 '24 08:05 exaby73