Read the statement by Michael Teeuw here.
Difficulty getting MMM-Transitfeed working
-
@UncleRoger run npm rebuild in the module folder
this module has a binary that has to match the electron version.
the distributed version does not. -
@UncleRoger or
better
cd ~/MagicMirror
npm install @electron/rebuild
cd modules/MMM-Transitfeed
…/…/node_modules/.bin/electron-rebuild
cd ~/MagicMirrorand restart MagicMirror however you do that -
I gave that a bash and am still getting the same error. I even wiped the system and started from scratch just in case I’d done something to make things worse.
-
@UncleRoger hm… I installed, did the npm install gtfs
ran, failed as version mismatch
I then did the../../node_modules/.bin/electron-rebuild ✔ Rebuild Completerestart mm and no problems, using the default config

-
I appreciate the help, as always… I wiped the system again, reinstalled the OS and MM, did the rebuild. Still the same error except the version numbers are different:
[2024-06-21 15:30:32.001] [ERROR] (node:53456) UnhandledPromiseRejectionWarning: Error: The module '/home/pi/MagicMirror/node_modules/better-sqlite3/build/Release/better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 127. This version of Node.js requires NODE_MODULE_VERSION 121. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or `npm install`).I should mention that this is on a Pi4 (probably 2gb) with no other modules installed.
Maybe it’s just not meant to be.
-
@UncleRoger what folder are you in when you do the electron-rebuild?
-
The MMM-transitfeed module directory:
{ cd ~/MagicMirror npm install @electron/rebuild cd ~/MagicMirror/modules/MMM-transitfeed ../../node_modules/.bin/electron-rebuild cd ~/MagicMirror }I basically copy-and-pasted that.
-
@UncleRoger and when the electron-rebuild ran it should have said
something about sqllite
and rebuild complete, like mine above -
Nothing about sqlite but it did say “Rebuild Complete”:
pi@MagicMirrorDev:~/MagicMirror $ { cd ~/MagicMirror npm install @electron/rebuild cd ~/MagicMirror/modules/MMM-transitfeed ../../node_modules/.bin/electron-rebuild cd ~/MagicMirror } added 81 packages in 11s 253 packages are looking for funding run `npm fund` for details ✔ Rebuild Complete pi@MagicMirrorDev:~/MagicMirror $This time around, I didn’t do the sqlite update:
{ cd ~/MagicMirror rm -r node_modules/better-sqlite3/ npm install better-sqlite3 --build-from-source --runtime=electron --target=26.4.3 --dist-url=https://electronjs.org/headers --force }But I don’t think it worked any better when I did. I’ll try that and then do the rebuild.
-
@UncleRoger don’t install sql again, else you have to rebuild again
-
Oops. I did the rebuild again. Still doesn’t say anything about the sqlite3 but it does say rebuild complete.
Thanks
-
@UncleRoger and? does it run.
-
Sadly, no. Same error.
-
Could it be hardware related? I’m not sure I have another Pi4 I can test with but I’ve got a Pi Zero 2 I could try. Would that be of any use?
-
@UncleRoger its not hardware, but another try wouldn’t hurt
-
There is no joy in mudville.
Here’s what I did with a fresh install of PiOS (Raspberry Pi 4 2gb):
pi@MagicMirrorDev:~/MagicMirror $ history 1 { sudo apt update; sudo apt full-upgrade; } 2 bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/raspberry.sh)" 3 sudo nmtui 4 sudo shutdown -r now 5 sudo nmtui 6 sudu shutdown -r now 7 sudo shutdown -r now 8 { cd ~/MagicMirror/modules; git clone https://github.com/bnitkin/MMM-transitfeed.git; } 9 cd .. 10 { cd ~/MagicMirror # Enter magicmirror project directory npm uninstall gtfs-realtime-bindings # Now part of gtfs npm install gtfs --save-dev # Force update to latest version } 11 { cd ~/MagicMirror # Enter magicmirror project directory npm uninstall gtfs-realtime-bindings # Now part of gtfs npm install gtfs --save-dev # Force update to latest version } 12 { sudo npm install -g n; sudo n lts; sudo n latest; sudo n prune; } 13 { cd ~/MagicMirror # Enter magicmirror project directory npm uninstall gtfs-realtime-bindings # Now part of gtfs npm install gtfs --save-dev # Force update to latest version } 14 cd $HOME/MagicMirror; 15 DISPLAY=:0 npm start 16 npm run config:check 17 DISPLAY=:0 npm start 18 npm run config:check 19 DISPLAY=:0 npm start 20 npm run config:check 21 DISPLAY=:0 npm start 22 { cd ~/MagicMirror; rm -r node_modules/better-sqlite3/; npm install better-sqlite3 --build-from-source --runtime=electron --target=26.4.3 --dist-url=https://electronjs.org/headers --force; } 23 { cd ~/MagicMirror; npm install @electron/rebuild; } 24 { cd ~/MagicMirror/modules/MMM-transitfeed; ../../node_modules/.bin/electron-rebuild; cd ~/MagicMirror; } 25 DISPLAY=:0 npm start 26 history pi@MagicMirrorDev:~/MagicMirror $The nmtui stuff is to set the IP address (which I did wrong a couple of times) and then I mucked up the config.js putting in the transitfeed module stuff.
Here’s the log from trying to run it at the end (it’s basically the same):
[2024-06-25 11:53:08.617] [LOG] MMM-transitfeed: Importing with [object Object] [2024-06-25 11:53:08.649] [ERROR] (node:3464) UnhandledPromiseRejectionWarning: Error: The module '/home/pi/MagicMirror/node_modules/better-sqlite3/build/Release/better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 116. This version of Node.js requires NODE_MODULE_VERSION 121. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or `npm install`). at process.func [as dlopen] (node:electron/js2c/node_init:2:2214) at Module._extensions..node (node:internal/modules/cjs/loader:1343:18) at Object.func [as .node] (node:electron/js2c/node_init:2:2214) at Module.load (node:internal/modules/cjs/loader:1098:32) at Module._load (node:internal/modules/cjs/loader:945:12) at c._load (node:electron/js2c/node_init:2:13672) at Module.require (node:internal/modules/cjs/loader:1122:19) at require (node:internal/modules/helpers:130:18) at bindings (/home/pi/MagicMirror/node_modules/bindings/bindings.js:112:48) at new Database (/home/pi/MagicMirror/node_modules/better-sqlite3/lib/database.js:48:64) at setupDb (file:///home/pi/MagicMirror/node_modules/gtfs/lib/db.js:10:14) at openDb (file:///home/pi/MagicMirror/node_modules/gtfs/lib/db.js:31:12) at Module.importGtfs (file:///home/pi/MagicMirror/node_modules/gtfs/lib/import.js:676:16) at Class.startup (/home/pi/MagicMirror/modules/MMM-transitfeed/node_helper.js:48:29) at async Class.socketNotificationReceived (/home/pi/MagicMirror/modules/MMM-transitfeed/node_helper.js:33:52) (Use `electron --trace-warnings ...` to show where the warning was created) [2024-06-25 11:53:08.650] [ERROR] (node:3464) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)I’m thinking I might give it another go from scratch without worrying about the IP address and catching all the output from each command.
-
Could you check that I’m doing things correctly? These are the commands I’m using to get from a fresh OS to MM with transitfeed:
# Update system { sudo apt update sudo apt full-upgrade } # Install MagicMirror bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/raspberry.sh)" # NOTICE ON INSTALL: npm install -g npm@10.8.1 # update Node/NPM { sudo npm install -g n sudo n lts sudo n latest sudo n prune } # Install transitfeed { cd ~/MagicMirror/modules git clone https://github.com/bnitkin/MMM-transitfeed.git } # Install gtfs { cd ~/MagicMirror # Enter magicmirror project directory npm uninstall gtfs-realtime-bindings # Now part of gtfs npm install gtfs --save-dev # Force update to latest version } # Update better-sqlite3 { cd ~/MagicMirror rm -r node_modules/better-sqlite3/ npm install better-sqlite3 --build-from-source --runtime=electron --target=26.4.3 --dist-url=https://electronjs.org/headers --force } # Rebuild Electron? { cd ~/MagicMirror npm install @electron/rebuild cd ~/MagicMirror/modules/MMM-transitfeed ../../node_modules/.bin/electron-rebuild cd ~/MagicMirror }Thanks so much for your help!
-
@UncleRoger ok, simpler
flash sd card with
use my script to install MM (do nothing before, it does the update and adds whats needed for MM)
npm start to prove MagicMirror is working
clone the modulecd to the module folder and do the npm install and npm install gtfs (in module folder NOT MM folder!!)
npm install gtfs --save-devnow, need electron rebuild
cd …/… # magicmirror folder
npm install @electron/rebuild
cd - # go back to module folder
…/…/node_modules/.bin/electron-rebuild
wait, should show sqlite
rebuild complete
cd - # back to MM folderadd the config entry for the module
npm startshould work
-
When you say “module folder”, you mean (in this case) ~/MagicMirror/modules/MMM-transitfeed not ~/MagicMirror/modules/ right? I’m pretty sure, but better safe than sorry.
Thanks!
-
@UncleRoger correct the module’s folder
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login