Diego Morejon
Diego Morejon

Reputation: 165

Uncaught TypeError: Cannot read properties of undefined (reading 'replace')

I am presenting this error when uploading the player to the server since locally it works fine.

Let me explain a bit, the player locally shows the song that is playing, the one that is coming and the one that has already played, but when uploading to the server I get the following error: Uncaught TypeError: Cannot read properties of undefined (reading 'replace' ) in the following lines of code but I don't exactly understand why. I would like to know if you can guide me on this to finish this project and deliver it, thanks in advance.

 let song = data.currentSong.replace(/'/g, '\'');
    currentSong = song.replace(/&/g, '&');

    let artist = data.currentArtist.replace(/'/g, '\'');
    currentArtist = artist.replace(/&/g, '&');

Upvotes: 13

Views: 192502

Answers (2)

Asyia
Asyia

Reputation: 151

I had the same error and I fixed it like this:

Before:

 localizeDate(date) {
   date = date.replace("T", "/");
   return date.replace(".000000Z", "");
 },

After:

localizeDate(date) {
  if(!date) return
  date = date.replace("T", "/");
  return date.replace(".000000Z", "");
},

The issue is that the function is called before any data loads from the server.

You could also fix it with Promises, async/wait or loaders.

Upvotes: 15

Fluent-Themes
Fluent-Themes

Reputation: 194

In your example Uncaught TypeError: Cannot read properties of undefined (reading 'replace' ) can occur only if your variables song and/or artist are undefined.

That means either data.currentSong or data.currentArtist or both of them getting you undefined result.

Answer to your question:
There could be some differences between the web server and the local server. For example, sometimes the jQuery version of local server is different than the web server. The exact source of the issue could be found, if you can share the code which is responsible to get you the data.

Upvotes: 13

Related Questions