firebase-tools-ui icon indicating copy to clipboard operation
firebase-tools-ui copied to clipboard

ERR_REQUIRE_ESM error when starting emulator ui

Open wwmike opened this issue 1 year ago • 24 comments
trafficstars

Describe the bug When I start the emulators with emulators start command, all, but ui starts. This is the error log:

node:internal/modules/cjs/loader:1163
      throw err;
      ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /home/misi/.cache/firebase/emulators/ui-v1.11.7/server/server.js not supported.
server.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
Instead rename server.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in /home/misi/package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).

    at Function.runMain (pkg/prelude/bootstrap.js:1979:12) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v18.5.0

I don't know where node v18.5.0 comes from, I haven't found this version on my PC, my node version is 21.1.0, which is available in $PATH. Also, once I could see v20 after nvm use v20... and deleting firebase cache, but the next run it was v18.5.0 again.

To Reproduce Steps to reproduce the behavior:

  1. firebase emulators:start
  2. See error
~/projects/wish-list/frontend (WSH-17-calendar) $ firebase emulators:start    
i  emulators: Starting emulators: auth, firestore, database, storage
⚠  firestore: Cloud Firestore rules file /home/misi/projects/wish-list/frontend/firestore.rules specified in firebase.json does not exist.
⚠  firestore: The emulator will default to allowing all reads and writes. Learn more about this option: https://firebase.google.com/docs/emulator-suite/install_and_configure#security_rules_configuration.
i  firestore: downloading cloud-firestore-emulator-v1.18.2.jar...
Progress: ================================================================================================================================================================================> (100% of 64MB)
i  firestore: Firestore Emulator logging to firestore-debug.log
✔  firestore: Firestore Emulator UI websocket is running on 9150.
⚠  database: Did not find a Realtime Database rules file specified in a firebase.json config file. The emulator will default to allowing all reads and writes. Learn more about this option: https://firebase.google.com/docs/emulator-suite/install_and_configure#security_rules_configuration.
i  database: downloading firebase-database-emulator-v4.11.2.jar...
Progress: ================================================================================================================================================================================> (100% of 35MB)
i  database: Database Emulator logging to database-debug.log
i  storage: downloading cloud-storage-rules-runtime-v1.1.3.jar...
Progress: ================================================================================================================================================================================> (100% of 53MB)
i  ui: downloading ui-v1.11.7.zip...
Progress: =================================================================================================================================================================================> (100% of 4MB)
i  ui: Emulator UI logging to ui-debug.log
⚠  ui: Fatal error occurred: 
   Emulator UI has exited with code: 1, 
   stopping all running emulators
i  ui: Stopping Emulator UI
i  database: Stopping Database Emulator
i  firestore: Stopping Firestore Emulator
i  auth: Stopping Authentication Emulator
i  storage: Stopping Storage Emulator
i  hub: Stopping emulator hub
i  logging: Stopping Logging Emulator

Expected behavior It should be running.

Desktop:

  • OS: Windows ( WSL 2.0 Ubuntu )
  • Browser -
  • Version Ubuntu 22.04.3 LTS

Additional context Add any other context about the problem here.

wwmike avatar Feb 02 '24 07:02 wwmike

node:internal/modules/cjs/loader:986
    throw new ERR_REQUIRE_ESM(filename, true);
    ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /home/ryan/.cache/firebase/emulators/ui-v1.11.8/server/server.mjs not supported.
Instead change the require of /home/ryan/.cache/firebase/emulators/ui-v1.11.8/server/server.mjs to a dynamic import() which is available in all CommonJS modules.
    at Function.runMain (pkg/prelude/bootstrap.js:1979:12) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v18.5.0

The same issue with a fresh install of Ubuntu 22.04.4 LTS. Tested Node 16, 18 and 20 LTS. @christhompsongoogle Is Firebase Emulator not compatible with Ubuntu 22.04?

rynz avatar Mar 19 '24 05:03 rynz

I made some changes to the UI recently which changed the output from js to mjs - try installing a version prior to 13.5.1 and see if that fixes the issue

https://github.com/firebase/firebase-tools/releases/tag/v13.5.1

christhompsongoogle avatar Mar 19 '24 19:03 christhompsongoogle

try installing a version prior to 13.5.1 and see if that fixes the issue

https://github.com/firebase/firebase-tools/releases/tag/v13.5.0 fixes the issue.

rynz avatar Mar 20 '24 00:03 rynz

I have 13.6.0 and facing the same issue, should I downgrade?

mosesgameli avatar Mar 27 '24 21:03 mosesgameli

Try downgrading and report the results, I can't reproduce on my linux version but more information is helpful

On Wed, Mar 27, 2024 at 2:09 PM Moses Gameli @.***> wrote:

I have 13.6.0 and facing the same issue, should I downgrade?

— Reply to this email directly, view it on GitHub https://github.com/firebase/firebase-tools-ui/issues/1014#issuecomment-2023995002, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZKGOHSY3YILS6HWXBXOBJLY2MYRZAVCNFSM6AAAAABCWHS7PCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRTHE4TKMBQGI . You are receiving this because you were mentioned.Message ID: <firebase/firebase-tools-ui/issues/1014/2023995002 <(202)%20399-5002>@ github.com>

christhompsongoogle avatar Mar 27 '24 21:03 christhompsongoogle

Same here, downgrading to 13.5.0 solved the issue.

george-oakling avatar Apr 15 '24 12:04 george-oakling

Downgrading from 13.8.0 to 13.5.0 resolved the issue for me as well.

jrdowns avatar May 03 '24 17:05 jrdowns

running into this on macOS 14.6.1 as well:

firebase --version
13.16.0

and in ui-debug.log:

node:internal/modules/cjs/loader:986
    throw new ERR_REQUIRE_ESM(filename, true);
    ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/amorton/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs not supported.
Instead change the require of /Users/amorton/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs to a dynamic import() which is available in all CommonJS modules.
    at Function.runMain (pkg/prelude/bootstrap.js:1979:12) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v18.5.0

Something is clearly broken here - and downgrading isn't really a solution - can someone please look at this?

@christhompsongoogle

apmorton avatar Sep 08 '24 04:09 apmorton

running into this on macOS 14.6.1 as well:

firebase --version
13.16.0

and in ui-debug.log:

node:internal/modules/cjs/loader:986
    throw new ERR_REQUIRE_ESM(filename, true);
    ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/amorton/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs not supported.
Instead change the require of /Users/amorton/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs to a dynamic import() which is available in all CommonJS modules.
    at Function.runMain (pkg/prelude/bootstrap.js:1979:12) {
  code: 'ERR_REQUIRE_ESM'
}

Node.js v18.5.0

Something is clearly broken here - and downgrading isn't really a solution - can someone please look at this?

@christhompsongoogle

I have the exact problem. Did you manage to fix it.

SakhileMamba avatar Sep 13 '24 19:09 SakhileMamba

Something is clearly broken here - and downgrading isn't really a solution - can someone please look at this?

Same issue here, also on macOS 14.6.1.

firebase --version
13.17.0

Downgrading does work, but reports the following warnings:

npm install -g [email protected]
npm warn deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated [email protected]: Rimraf versions prior to v4 are no longer supported
npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported
npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported
npm warn deprecated [email protected]: Package is no longer maintained
npm warn deprecated [email protected]: Package is no longer maintained
npm warn deprecated [email protected]: Package is no longer maintained

added 106 packages, removed 82 packages, and changed 551 packages in 6s

67 packages are looking for funding
  run `npm fund` for details

Additionally, this warning shows up in the function logs:

function[europe-west2-myFunction] (node:49542) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
function[europe-west2-myFunction] (Use `node --trace-deprecation ...` to show where the warning was created)

It would be great to see some movement on a proper fix as opposed to a risky workaround.

Genyus avatar Sep 17 '24 15:09 Genyus

I am also having this issue on Ubuntu 24.04.1 LTS | firebase 13.18.0

k2bd avatar Sep 22 '24 09:09 k2bd

At least on Mac, removing the broken curl-installed latest version (13.19.0) with curl -sL https://firebase.tools | uninstall=true bash and replacing it with the npm version (npm install -g firebase-tools@latest) works. ¯_(ツ)_/¯

kwight avatar Sep 23 '24 19:09 kwight

@kwight thanks, it fixed my error

syt0r avatar Sep 24 '24 08:09 syt0r

@kwight I didn't need to uninstall anything, but it appears that this issue is indeed fixed in 13.20.x 🥳

Genyus avatar Oct 01 '24 19:10 Genyus

@Genyus , i try get my firebase emulator on Docker work as code show below

FROM openjdk:24-slim

RUN apt-get update && apt-get install -y curl sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN curl -sL https://firebase.tools | bash

The same error present

node:internal/modules/cjs/loader:986
    throw new ERR_REQUIRE_ESM(filename, true);
    ^

Error [ERR_REQUIRE_ESM]: require() of ES Module /root/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs not supported.
Instead change the require of /root/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs to a dynamic import() which is available in all CommonJS modules.
    at Function.runMain (pkg/prelude/bootstrap.js:1979:12) {
  code: 'ERR_REQUIRE_ESM'
}

Config:

root@3c8f7ba2d348:/# firebase --version
13.20.2
root@3c8f7ba2d348:/# node -v
v20.17.0

neviaumi avatar Oct 01 '24 23:10 neviaumi

@neviaumi Maybe try the approach suggested by @kwight above in your Docker config and install with npm instead of curl?

At least on Mac, removing the broken curl-installed latest version (13.19.0) with curl -sL https://firebase.tools | uninstall=true bash and replacing it with the npm version (npm install -g firebase-tools@latest) works. ¯(ツ)

Genyus avatar Oct 02 '24 15:10 Genyus

@Genyus Thanks for suggestion :) I do fix it as you suggested. Using Npm instead of auto installation script.

Here is working docker file

FROM openjdk:24-slim

RUN apt-get update && apt-get install -y curl sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
RUN <<EOF
#!/bin/bash
source ~/.bashrc
nvm install --lts
nvm use --lts
npm install -g firebase-tools
EOF
RUN cat <<EOF > ./firebase.json
{
  "emulators": {
    "auth": {
      "host": "0.0.0.0"
    },
    "firestore": {
      "host":"0.0.0.0"
    },
    "ui": {
      "host": "0.0.0.0"
    }
  }
}
EOF
RUN mkdir -p ./scripts/docker
RUN cat <<EOF > ./scripts/docker/start.sh
#!/bin/bash
source ~/.bashrc
cat ./firebase.json
nvm use --lts
firebase emulators:start --project made-in-uk
EOF

neviaumi avatar Oct 02 '24 15:10 neviaumi

@kwight fixed mine as well on Ubuntu 22.04 with Firebase v13.22.0.

Zelfapp avatar Oct 10 '24 21:10 Zelfapp

This is making firebase-asdf unusable, unfortunately.

RomuloPBenedetti avatar Oct 18 '24 00:10 RomuloPBenedetti

I'm having the same issue on the latest version, 13.22.1, on MacOS, installed using the installation script from firebase.tools.

Installing via npm install -g firebase-tools as suggested by kwight gave me the same version (13.22.1), but the way that npm installed it, it works fine!

I wonder if it's something to do with the node environment it runs in, because I also noticed in ui-debug.log that when it was having an error, the end of the log said "Node.js v18.5.0" which is not a version I can find installed on my system... (at least not via nvm or asdf... I don't think MacOS has a system version of node preinstalled, does it?)

mltsy avatar Oct 19 '24 15:10 mltsy

Occurring for me on MacOS as well. Installing npm install -g firebase-tools did not fix the issue.

patrickdundas avatar Oct 25 '24 03:10 patrickdundas

Only thing that worked,

  1. Uninstall the latest firebase-tools (however you're installed. Just remove it.)
  2. Fix EACESS Permissions issues with https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
  3. Install firebase-tools using npm i firebase-tools@latest -g

In our case, we were not able to install firebase-tools using npm. The script version was getting installed, but it has some known bug with latest release.

mjrulesamrat avatar Oct 29 '24 10:10 mjrulesamrat

###ASAP -- i have a project submission next day please (Any one 🙏) why is my app crashing in the emulator

ghost avatar Nov 17 '24 15:11 ghost

Exact same issue here. @kwight thanks, your solution fixed it for me. I'm using a mac.

nikkieke avatar Dec 20 '24 10:12 nikkieke