Skip to content

undici dependency breaks bundling with React Native (Expo) due to use of stream module (initially found by @arvl130) #8062

@Pm-Moiroud

Description

@Pm-Moiroud

Operating System

Mac os

Browser Version

Chrome, firefox, ...

Firebase SDK Version

10.6.0

Firebase SDK Product:

Analytics, Auth, Database, Firestore, Functions, Messaging

Describe your project's tooling

  • Expo SDK 50
  • Developing for : Web (issue there), android, ios
  • Firebase js SDK 10.8.1

Describe the problem

Initializing Firebase on Expo with the dev client enabled, and running onAuthStateChanged produces this bundling error:

Web apps/mobile/index.ts ░░░░░░░░░░░░░░░░  0.0% (0/1)
λ node_modules/expo-router/node/render.js ░░░░░░░░░░░░░░░░  0.0% (0/1)Error: ENOENT: no such file or directory, open '/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/@expo/server/src/index.ts'
    at Object.readFileUtf8 (node:internal/fs/sync:25:18)
    at Object.readFileSync (node:fs:441:19)
    at getCodeFrame (/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/metro/src/Server.js:868:18)
    at Server._symbolicate (/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/metro/src/Server.js:945:22)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Server._processRequest (/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/metro/src/Server.js:394:7) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/@expo/server/src/index.ts'
}
Error: ENOENT: no such file or directory, open '/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/@expo/server/src/vendor/http.ts'
    at Object.readFileUtf8 (node:internal/fs/sync:25:18)
    at Object.readFileSync (node:fs:441:19)
    at getCodeFrame (/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/metro/src/Server.js:868:18)
    at Server._symbolicate (/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/metro/src/Server.js:945:22)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Server._processRequest (/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/metro/src/Server.js:394:7) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/@expo/server/src/vendor/http.ts'
}

Metro error: Unable to resolve module stream/web from /Users/pierre-matisse/sirup/mercury-boiler-v2/node_modules/undici/lib/core/util.js: stream/web could not be found within the project or in these directories:
  ../../node_modules
  ../../node_modules
  369 | function ReadableStreamFrom (iterable) {
  370 |   if (!ReadableStream) {
> 371 |     ReadableStream = require('stream/web').ReadableStream
      |                               ^
  372 |   }
  373 |
  374 |   if (ReadableStream.from) {


Call Stack
  requireFileContentsWithMetro (node_modules/expo/node_modules/@expo/cli/src/start/server/getStaticRenderFunctions.ts:191:13)
  processTicksAndRejections (node:internal/process/task_queues)
  Object.getStaticRenderFunctions (node_modules/expo/node_modules/@expo/cli/src/start/server/getStaticRenderFunctions.ts:213:45)
  bundleStaticHtml (node_modules/expo/node_modules/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts:334:36)
  MetroBundlerDevServer.getStaticPageAsync (node_modules/expo/node_modules/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts:351:52)
  getHtml (node_modules/expo/node_modules/@expo/cli/src/start/server/metro/createServerRouteMiddleware.ts:78:31)
  handler (node_modules/@expo/server/src/index.ts:149:26)
Unable to resolve "stream/web" from "node_modules/undici/lib/core/util.js"

This error is caused when i'm loading firebase js SDK... I've tried to downgrade to firebase 10.6 but still i have the same problem.

Steps and code to reproduce issue

Thanks to @arvl130 we have a repo with a reproduction : https://github.com/arvl130/firebase-reactnative-broken-deps-repro

I've re-open this issue because no solution were found..

Thanks for your help 👍

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions