node-ical icon indicating copy to clipboard operation
node-ical copied to clipboard

uncaught exception: No toISOString function in exdate[name]

Open ElAmarok opened this issue 4 years ago • 5 comments

No toISOString function in exdate[name] TypeError: No toISOString function in exdate[name] at Object.EXDATE (/opt/iobroker/node_modules/node-ical/ical.js:299:17) at Object.handleObject (/opt/iobroker/node_modules/node-ical/ical.js:571:39) at Object.parseLines (/opt/iobroker/node_modules/node-ical/ical.js:623:18) at Immediate.<anonymous> (/opt/iobroker/node_modules/node-ical/ical.js:638:16) at processImmediate (internal/timers.js:464:21)

ElAmarok avatar Dec 28 '21 20:12 ElAmarok

Got the same error, any updates @jens-maus ?

xRealNeon avatar Jan 11 '23 21:01 xRealNeon

Can you try to get a minimal ics File that can reproduce this error?

Tis error happensd when exDate is somehow strange becaue it contains something BUT mot a valid date object, so finding the reason would be ideal

Apollon77 avatar Jan 12 '23 09:01 Apollon77

@marsmaennchen @xRealNeon I had to put a fix in our application as the dates are returned from rrule.between() , not by ical.

                                        let dates=rrule.between(x,y) // get the list of rule matching dates
					dates = dates.filter((d) => {    // filter out any garbage dates.. usually when TZ is trash
						if (JSON.stringify(d) === "null") return false;
						else return true;
					});

sdetweil avatar Nov 15 '23 16:11 sdetweil

this should be closed as a dup of
#144

sdetweil avatar Dec 28 '23 19:12 sdetweil

I am getting this error after updating to a new version of node-ical. I have isolated the version in which the behavior changed, it changed between 0.12.6 and 0.12.7. The attached code will recreate the error (works in versions earlier than 0.12.7)

const ical = require('node-ical');

const myevents = "BEGIN:VEVENT\r\nDTSTART:20230105T191500Z\r\nDTEND:20230105T193000Z\r\nRRULE:FREQ=WEEKLY;INTERVAL=1\r\nDTSTART:20230105T193000Z\r\nDTEND:20230105T194500Z\r\nRRULE:FREQ=WEEKLY;INTERVAL=1\r\nEND:VEVENT\r\n";


async function doit(){
    var events = await ical.async.parseICS(myevents);
}
console.log("Starting....");
doit()
  .then(() => {
    console.log("Finished....");
    process.exit(0);
  })
  .catch(err => {
    console.error(err);
    process.exit(1);
  });

johnhundley avatar Aug 05 '24 21:08 johnhundley