开发者问题收集

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

2021-09-06
173031

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

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

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

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

我遇到了同样的错误,我是这样修复的:

之前:

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

之后:

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

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

您也可以使用 Promises、async/wait 或加载器来修复它。

Asyia
2022-05-09

在您的示例中,仅当您的变量 song 和/或 artist undefined 时,才会发生 Uncaught TypeError: Cannot read properties of undefined (reading 'replace' )

这意味着 data.currentSongdata.currentArtist 或两者均会得到未定义的结果。

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

Fluent-Themes
2021-09-11