Skip to content

[Bug] Electron version included with MM v2.37.0 has a node-fetch polling bug #4199

Description

@parnic

Environment

MagicMirror² version: 2.37.0
Node version: 22.23.1
npm version: 10.9.8
Platform: RPi 3b running Raspbian 11 bullseye

Which start option are you using?

node --run start:x11

Are you using PM2?

Yes

Module

None

Have you tried disabling other modules?

  • Yes
  • No

Have you searched if someone else has already reported the issue on the forum or in the issues?

  • Yes

What did you do?

Configuration
var config = {
        port: 8080,
        address: "0.0.0.0",
        ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1", "10.0.0.0/8"], // Set [] to allow all IP addresses
                                                               // or add a specific IPv4 of 192.168.1.5 :
                                                               // ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
                                                               // or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
                                                               // ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],

        language: "en",
        timeFormat: 12,
        units: "imperial",

        modules: [
[...]
                {
                        module: "MMM-GoogleCalendar",
                        header: "Family calendar",
                        position: "top_left",
                        config: {
                                calendars: [
                                        {
                                                symbol: "male",
                                                calendarID: "redacted",
                                                color: "#ff8e99"
                                        },
                                        {
                                                symbol: "female",
                                                calendarID: "redacted",
                                                color: "#ffc0cb"
                                        },
                                        {
                                                symbol: "hockey-puck",
                                                calendarID: "redacted",
                                                color: "#bcddff"
                                        },
                                        {
                                                symbol: "people-group",
                                                calendarID: "redacted",
                                                color: "#8eff99"
                                        },
                                        {
                                                url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics"
                                        }//,
                                ],
                                coloredSymbolOnly: true,
                                colored: true,
                                maximumNumberOfDays: 365,
                                hidePrivate: true,
                                showEnd: false,
                                getRelative: 0
                        }
                },
[...]
        ]

};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = config;}
whatever https://github.com/randomBrainstormer/MMM-GoogleCalendar is using to fetch calendars (node-fetch)

Steps to reproduce the issue:
Install https://github.com/randomBrainstormer/MMM-GoogleCalendar
Configure to show your authenticated calendars
View error in log

What did you expect to happen?

Calendars to download properly

What actually happened?

Error:

0|mm  | [2026-07-08 14:23:51.273] [ERROR] [MMM-GoogleCalendar] MMM-GoogleCalendar Error. Could not fetch calendar:  redacted Error: Error
0|mm  | Message: Invalid response body while trying to fetch https://www.googleapis.com/calendar/v3/calendars/redacted/events?timeMin=2026-07-08T19%3A23%3A49.239Z&timeMax=2027-07-08T19%3A23%3A49.239Z&maxResults=10&singleEvents=true&orderBy=startTime: Premature close
0|mm  | Stack: Error: Invalid response body while trying to fetch https://www.googleapis.com/calendar/v3/calendars/redacted/events?timeMin=2026-07-08T19%3A23%3A49.239Z&timeMax=2027-07-08T19%3A23%3A49.239Z&maxResults=10&singleEvents=true&orderBy=startTime: Premature close
0|mm  |     at Gaxios._request (/home/parnic/MagicMirror/modules/MMM-GoogleCalendar/node_modules/gaxios/build/src/gaxios.js:149:19)
0|mm  |     at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
0|mm  |     at async OAuth2Client.requestAsync (/home/parnic/MagicMirror/modules/MMM-GoogleCalendar/node_modules/google-auth-library/build/src/auth/oauth2client.js:429:18)

Additional comments

This is caused by a regression in node v22.23.0 and v24.17.0, fixed in v22.23.1 and v24.18.0: nodejs/node#63989
The version of Electron bundled with MM 2.37.0 is v42.5.2 which uses node v24.17.0. Updating to Electron v42.6.0 or v43.1.0 corrects the issue.

I know you guys almost never do out-of-band releases, but this breaks any module dependent on the in-built node-fetch keep-alive behavior.

The workaround is to edit your MM package.json to set the electron optional dep to "electron": "^42.6.0", run npm install, and restart MM to let it pull down the newer version of Electron.

It looks like latest develop as of this writing is still using a bad version of Electron (v43.0.0 per 503c171)

Participation

  • I am willing to submit a pull request for this change.

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