-1

I am getting this undefined error in my node js written program. This was the line that was causing the issue

sockets[index].notification = 1;

So in order to resolve this, I did this

if ( typeof sockets[index].notification !== 'undefined' ) {
                              
   sockets[index].notification = 1;
 }

But it still gave the same error

if ( typeof sockets[index].notification_acc_on !== 'undefined' ) {
                                                   ^

TypeError: Cannot read property 'notification' of undefined
    at Socket.<anonymous> (/var/www/html/server.js:506:56)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:597:20)

How can I check and handle this so if the variable isn't set, my program doesn't crash at least? In short I want to prevent the crash

mynameisbutt
  • 167
  • 1
  • 3
  • 22
  • The error states "Cannot read property 'notification' ***of*** undefined". You are reading `notification` of `sockets[index]`. `sockets[index]` is `undefined`. Not `sockets[index].notification`. That being said it sounds like an [off-by-one error](https://stackoverflow.com/questions/2939869/what-is-an-off-by-one-error-and-how-do-i-fix-it). – Ivar Oct 14 '21 at 19:03

2 Answers2

1

It appears that the problem is with sockets[index] being undefined.

if ( typeof sockets[index] !== 'undefined' ) {
                              
   sockets[index].notification = 1;
}

There are other checks you might consider exploring, for example checking for null value, confirming that sockets exists, etc. My response only deals with the immediate problem from the original post.

sfuqua
  • 5,797
  • 1
  • 32
  • 33
0

You reveive this error because either sockets or sockets[index] is undefined. To avoid this error, you can perform the following check:

if (typeof sockets?.[index] !== 'undefined') {
}
Maksym Shcherban
  • 742
  • 4
  • 13