Syntax error: Unterminated statement error after running a loop for a long time



  • I have set up 10 Flic Hubs to run a code that sends a ping to my API. The code runs in an infinite loop with 1 hour sleep so I've had a ping every hour from every device.

    All seemed perfect until all of the devices stopped working around the same time.

    I've got below error on the SDK:

    SyntaxError: unterminated statement (line 2)
        at [anon] (root/heartbeat/main.js:2) internal
        at [anon] (duktape.c:71822) internal
        at loadAndCompileUserModule () native strict preventsyield
        at require (init.js:122)
        at [anon] (init.js:139) preventsyield
        at runInit () native strict preventsyield
        at handlePacket (pipe_communication.js:48)
        at readCallback (pipe_communication.js:93) preventsyield
    

    Line to corresponds to either of below lines:

    var buttonManager = require("buttons");
    var buttons = buttonManager.getButtons();
    

    Here is how my code looks like:

    // Heartbeat.js
    var buttonManager = require("buttons");
    var buttons = buttonManager.getButtons();
    var http = require("http");
    
    var url = "my_api_url";
    var DEVICE_ID = 'hub_id'
    
    function myLoop() {
        setTimeout(function() {
            for (var i = 0; i < buttons.length; i++) {
                var button = buttons[i];
                http.makeRequest({
                    url: url,
                    method: "POST",
                    headers: {
                        "Content-Type": "application/json"
                    },
                    content: JSON.stringify({
                        'pressedAt': Date.now(),
                        'batteryStatus': button.batteryStatus,
                        'button_sn': button.serialNumber,
                        'activeDisconnect': button.activeDisconnect,
                        'connected': button.connected,
                        'batteryStatus': button.batteryStatus,
                        'uuid': button.uuid,
                        'flicVersion': button.flicVersion,
                        'firmwareVersion': button.firmwareVersion,
                        'key': button.key,
                        'passiveMode': button.passiveMode,
                        'device_sn': DEVICE_ID,
                        'dataType': 'heartbeat'
                    }),
                }, function(err, res) {
                    console.log("request status: " + JSON.stringify(res));
                });
            }
    
            myLoop();
        }, 1000 * 60 * 60)
    }
    
    myLoop();
    console.log("Started");
    

    Anyone have any ideas?
    Thanks.


Log in to reply