Re: MMM-transitfeed - upcoming departure board for most transit agencies
I tried to install this a while back but ran into problems. I had difficulty initially because when I tried to install it, I got a message back saying the gtfs stuff needed a newer node.js. I tried updating it and that went… badly. I managed to get things back the way they were and gave up for a bit. (Had a lot going on in my life at the time.)
I’ve decided to try again (I want to get it working for my son who goes to school/work on public transit) and this time I set up a fresh install. New Raspberry PiOS, new MM install, nothing else done. Here’s what I’ve done so far:
# 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)"
# 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
And here’s the error I’m getting:
[2024-06-21 11:14:44.933] [ERROR] (node:53839) 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-21 11:14:44.934] [ERROR] (node:53839) 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)
It seems like I need an even newer version of better_sqlite3? Or maybe an older version of node.js?