Read the statement by Michael Teeuw here.
MMM-Wunderlist-Enhanced javascript error
-
Running MMM-Wunderlist-Enhanced via PM2 on Raspbian Jessie Lite. MM 2.1.3 and Electron 1.4.5.
MMM-Wunderlist-Enhanced doesn’t show on screen. Checking PM2 error logs shows:
** Message: console message: [native code] @0: Load script: modules/MMM-Wunderlist-Enhanced//MMM-Wunderlist-Enhanced.js ** Message: console message: http://localhost:8080/modules/MMM-Wunderlist-Enhanced//MMM-Wunderlist-Enhanced.js @59: SyntaxError: Unexpected token '>'I’ve tried the following, just to make sure all dependencies and files are up to date and correct:
pi@kitchenpi:~/MagicMirror/modules/MMM-Wunderlist-Enhanced $ git fetch --all Fetching origin pi@kitchenpi:~/MagicMirror/modules/MMM-Wunderlist-Enhanced $ git reset --hard origin/master HEAD is now at 4f01f5d Update README.md pi@kitchenpi:~/MagicMirror/modules/MMM-Wunderlist-Enhanced $ npm install up to date in 37.436sSeems OK. The section of code in MMM-Wunderlist-Enhanced.js that’s giving the problem is:
this.config.lists.forEach((listValue, listKey) => {and in context here (line 59):
getTodos: function() { var tasks = []; this.config.lists.forEach((listValue, listKey) => { let list = this.tasks[listValue]; if (list && list.length) list.forEach(todo => { if (this.config.order === 'reversed') { tasks.push(todo); } else { tasks.unshift(todo) }It seems like the ‘=>’ is the problem?
I’m not a javascript coder, so I can’t tell if it’s supposed to be that way or not.
I tried changing it to just ‘=’, but that doesn’t fix the problem.
-
@geeklimit what is your device?
=>is ES6 style syntax, so old js engine cannot parse it. -
It’s a Pi Zero W.
pi@kitchenpi:~/MagicMirror/modules/MMM-NOAA $ npm version { 'mmm-noaa': '1.0.0', npm: '5.4.2', ares: '1.10.1-DEV', cldr: '31.0.1', http_parser: '2.7.0', icu: '59.1', modules: '57', node: '8.3.0', openssl: '1.0.2l', tz: '2017b', unicode: '9.0', uv: '1.13.1', v8: '6.0.286.52', zlib: '1.2.11' }Looks like node is at version 8.3.0.
So…downgrade node or update the syntax?
-
You can modify that with old style like this.
(...)=>{...}to
function (...) {...} -
@geeklimit I think pi zewo would use Midori instead Chromium as default browser. So you can try my above solution.
-
Watchout! You should change all of
thistoselfin function and prependvar self = thisbefore function. -
I am using Midori as part of my startup script. Specifically:
#!/bin/sh unclutter & xset -dpms # disable DPMS (Energy Star) features. xset s off # disable screen saver xset s noblank # don’t blank the video device matchbox-window-manager & midori -e Fullscreen -a http://localhost:8080 -
@geeklimit can you change midori to chromium? I think its easier than code modifying.
-
You’re losing me, but I think you mean I should edit the line causing the error from:
this.config.lists.forEach((listValue, listKey) => {to
this.config.lists.forEach ((listValue, listKey) {Or does this section of the code need a complete rewrite?
-
@geeklimit sorry but i think there is not the only place where es6 style used. You should find and modify every place of that kinds. Browser changing is more easier.
-
I’d love to use Chromium instead of Midori, but the tutorial I followed for getting MagicMirror working on a Pi Zero W used Midori, and I don’t know a lot about what I’m doing.
Theoretically I could look up how to install Chromium and change the browser-boot script from:
#!/bin/sh unclutter & xset -dpms # disable DPMS (Energy Star) features. xset s off # disable screen saver xset s noblank # don’t blank the video device matchbox-window-manager & midori -e Fullscreen -a http://localhost:8080to
#!/bin/sh unclutter & xset -dpms # disable DPMS (Energy Star) features. xset s off # disable screen saver xset s noblank # don’t blank the video device matchbox-window-manager & chromium-browser --no-sandbox --app="http://localhost:8080"Assuming that Chromium uses the same switches?
Installing Chromium now via:
sudo apt-get -y install chromium-browserWill test.
-
getTodos: function() { var tasks = []; var self = this; this.config.lists.forEach( function (listValue, listKey) { let list = self.tasks[listValue]; if (list && list.length) list.forEach(function (todo) { if (self.config.order === 'reversed') { tasks.push(todo); } else { tasks.unshift(todo) }This ie rewritten code (not tested but I think it will work.)
-
Thanks! I am having other “SyntaxError: Unexpected token” errors in other modules as well, as you guessed.
Trying chromium first. I think that might be a better option, because even the default Compliments.js module has the same error.
-
OK, that fixed all of the modules I was having trouble with, but getting Chromium to work right wasn’t easy.
Chromium doesn’t like to be run as root (via startup script) you have to give it the flag:
--no-sandboxWhich doesn’t work, so instead you need to do this to run it as pi:
su pi -c 'chromium-browser --kiosk --noerrdialogs http://localhost:8080To launch it without toolbars or a window (fullscreen), you have to give it the flag:
--kioskI tried the -app switch, and it removes the toolbars but leaves the window, so --kiosk is the way to go.
But this leaves an annoying warning about --no-sandbox not being supported, so you have to also add in:
--noerrdialogsChromium also does an annoying popup when the Pi is rebooted without properly closing Chromium: “Chromium was not shut down correctly”. (power cycle or sudo reboot in the terminal). So you can try to edit Chromium’s file before it launches to make it think it shut down OK:
sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/PreferencesWhich doesn’t work because ~/ doesn’t work as expected when it’s a root-run startup script looking for a path in /home/pi/, so:
sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' /home/pi/.config/chromium/Default/PreferencesWhich didn’t work either, so I tried using some older documentation:
su pi -c 'chromium-browser --start-fullscreen --disable-session-crashed-bubble --disable-infobars http://localhost:8080Which also didn’t work.
So… Then I realized I don’t really care about my browsing session data at all, so tried this:
su pi -c 'chromium-browser --kiosk --incognito http://localhost:8080And that works, every time. Even when the Pi is power cycled.
Yikes.
So the complete launch command of “midori-start.sh” (now modified for Chromium) is:
#!/bin/sh unclutter & xset -dpms # disable DPMS (Energy Star) features. xset s off # disable screen saver xset s noblank # don’t blank the video device matchbox-window-manager & su pi -c 'chromium-browser --kiosk --incognito http://localhost:8080'This also gets rid of the balloon telling me that “I can search here with Google”, pointing to where the address bar should be when Pi opens Chrome for the first time. It only happens once, but nice to clear that out as well.
The moral of the story here is: Don’t try to be fancy, just brute force the f@#$ing thing.
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