jens-maus / node-ical

NodeJS class for parsing iCalendar/ICS files
Apache License 2.0
118 stars 50 forks source link

uncaught exception: No toISOString function in exdate[name] #172

Open marsmaennchen opened 2 years ago

marsmaennchen commented 2 years ago

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)

xRealNeon commented 1 year ago

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

Apollon77 commented 1 year ago

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

sdetweil commented 9 months ago

@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 commented 8 months ago

this should be closed as a dup of

144

johnhundley commented 4 weeks ago

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);
  });