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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions