firebase / firebase-js-sdk

Firebase Javascript SDK
https://firebase.google.com/docs/web/setup
Other
4.76k stars 873 forks source link

Firebase in Next.js 14 causes Error: Cannot find module 'undici' #8323

Open codercatdev opened 1 week ago

codercatdev commented 1 week ago

Operating System

macOS 14.5 (23F79)

Browser Version

Version 1.66.118 Chromium: 125.0.6422.147 (Official Build) (arm64)

Firebase SDK Version

10.12.2

Firebase SDK Product:

Auth, Firestore

Describe your project's tooling

Next.js 14, hosted on vercel

Describe the problem

When accessing pages I am getting a 500 error Cannot find module 'undici'. If I try to statically generate these pages it they build but when accessing live they do not render and throw a hard 500.

image

If I remove the static generation and run only on a function they still throw a 500 but the page actually loads.

image image

Everything worked fine until I introduced firebase/auth into the mix

image

Steps and code to reproduce issue

  1. git clone https://github.com/codercatdev/cms-sanity.git
  2. git checkout no-firebase OR git checkout firebase-no-static OR git checkout firebase-with-static

You will then need to host on Vercel as running locally will not show this issue.

abusada commented 1 week ago

Facing the same issue, I'm using firebase via next-firebase-auth-edge.

The issue happens only on production deployments on vercel, for example it doesn't happen when I make a production build locally.

Even though my logs are full of Error 500:

Error: Cannot find module 'undici'

And in the devtools network panel i see screenshot- 2024-06-19 at 13 26 34@2x

But the page is served properly and functioning as expected!

I don't know if this should be reported for firebase, vercel, or nextjs! but I'm gonna report it on every repo to make sure it gets the needed attention.

If it helps anyone, here's the require stack displayed with the error:

Error: Cannot find module 'undici'
Require stack:
- /var/task/apps/web/.next/server/app/(logged-out)/signup/page.js
- /var/task/node_modules/.pnpm/next@14.2.4_@babel+core@7.24.7_@opentelemetry+api@1.9.0_babel-plugin-macros@3.1.0_react-dom@1_w5bu2sx7by3sz6f3kfihanbzuu/node_modules/next/dist/compiled/next-server/server.runtime.prod.js
- /var/task/apps/web/___next_launcher.cjs
- /opt/rust/nodejs.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1145:15)
    at /var/task/node_modules/.pnpm/next@14.2.4_@babel+core@7.24.7_@opentelemetry+api@1.9.0_babel-plugin-macros@3.1.0_react-dom@1_w5bu2sx7by3sz6f3kfihanbzuu/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:11:28979
    at Module._load (node:internal/modules/cjs/loader:986:27)
    at /opt/rust/nodejs.js:1:11508
    at Function.Wt (/opt/rust/nodejs.js:1:11878)
    at Q.e.<computed>.K._load (/opt/rust/nodejs.js:1:11478)
    at Module.require (node:internal/modules/cjs/loader:1233:19)
    at u.require (/var/task/node_modules/.pnpm/next@14.2.4_@babel+core@7.24.7_@opentelemetry+api@1.9.0_babel-plugin-macros@3.1.0_react-dom@1_w5bu2sx7by3sz6f3kfihanbzuu/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:11:29195)
    at _require.i.require (/var/task/apps/web/.next/server/chunks/1161.js:22:66784)
    at require (node:internal/modules/helpers:179:18) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/var/task/apps/web/.next/server/app/(logged-out)/signup/page.js',
    '/var/task/node_modules/.pnpm/next@14.2.4_@babel+core@7.24.7_@opentelemetry+api@1.9.0_babel-plugin-macros@3.1.0_react-dom@1_w5bu2sx7by3sz6f3kfihanbzuu/node_modules/next/dist/compiled/next-server/server.runtime.prod.js',
    '/var/task/apps/web/___next_launcher.cjs',
    '/opt/rust/nodejs.js'
  ],
  digest: '1496355909'
}
jbalidiong commented 1 week ago

Thank you for bringing this to our attention. I tried implementing firebase via next-firebase-auth-edge but I wasn't able to experience any error 'Cannot find module undici'. Aside from Auth, are you using any other Firebase products? Also, I noticed a similar issue filed in Vercel repo. Does rolling back the version to 14.1.4 works on your end?