MagicMirror² v2.4.1 is available! For more information about this release, check out this topic.
Please read the release notes carefully since this update requires adjustments to your Raspberry Pi configuration!

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.436s
    

    Seems 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.


  • Module Developer

    @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?


  • Module Developer

    You can modify that with old style like this.

    (...)=>{...}
    

    to

    function (...) {...}
    

  • Module Developer

    @geeklimit I think pi zewo would use Midori instead Chromium as default browser. So you can try my above solution.


  • Module Developer

    Watchout! You should change all of this to self in function and prepend var self = this before 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
    

  • Module Developer

    @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?


  • Module Developer

    @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.