未捕获的类型错误:无法读取未定义的属性(读取“替换”)

Die*_*jon 9 javascript replace

我在将播放器上传到服务器时出现此错误,因为在本地它工作正常。

让我解释一下,播放器在本地显示正在播放的歌曲、即将播放的歌曲和已经播放的歌曲,但是上传到服务器时出现以下错误: Uncaught TypeError: Cannot read properties of undefined (在以下代码行中阅读 'replace' ),但我不太明白为什么。我想知道您是否可以指导我完成这个项目并交付它,提前致谢。

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

    let artist = data.currentArtist.replace(/'/g, '\'');
    currentArtist = artist.replace(/&/g, '&');
Run Code Online (Sandbox Code Playgroud)

小智 12

在您的示例中,仅当您的变量和/或未定义Uncaught TypeError: Cannot read properties of undefined (reading 'replace' )才会发生。songartist

这意味着它们中的一个data.currentSong或两个都会给你带来不确定的结果。data.currentArtist

回答您的问题:
网络服务器和本地服务器之间可能存在一些差异。例如,有时本地服务器的 jQuery 版本与 Web 服务器不同。如果您可以分享负责获取数据的代码,则可以找到问题的确切根源。


小智 10

我有同样的错误,我像这样修复了它:

前:

 localizeDate(date) {
   date = date.replace("T", "/");
   return date.replace(".000000Z", "");
 },
Run Code Online (Sandbox Code Playgroud)

后:

localizeDate(date) {
  if(!date) return
  date = date.replace("T", "/");
  return date.replace(".000000Z", "");
},
Run Code Online (Sandbox Code Playgroud)

问题是该函数在从服务器加载任何数据之前被调用。

您还可以使用 Promises、async/wait 或 loader 来修复它。