【问题标题】:Chrome extension response TypeError: Cannot read property 'text' of undefinedChrome 扩展响应 TypeError:无法读取未定义的属性“文本”
【发布时间】:2020-11-09 12:06:15
【问题描述】:

我从 background.js 中的 var hello 获得了响应数据,但是 在控制台中,我得到了这一行 "request.greeting.text === "varhello"" 这个错误:

事件处理程序中的错误:TypeError:无法读取未定义的属性“文本” 在 chrome-extension://jmekelgdokcelbkancdgfgagmiopdlpl/background.js:53:30

内容.js:

var varHello = {
    image_url: 'www.google.com',
    text: "varhello"
};
chrome.runtime.sendMessage(
    {greeting: varHello}, function(response) {
    console.log(response.farewell);
});

Background.js:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        console.log(sender.tab ?
            "from a content script:" + sender.tab.url :
            "from the extension");

        if (request.greeting.text === "varhello"){
            sendResponse({farewell: "goodbye"});
            console.log(request.greeting);
        }
        //console.log(request.greeting.toString());
    });

等待您的解决方案拥有干净的控制台 :-) tnx!

【问题讨论】:

  • 这意味着有一些代码正在发送不同的对象。但是,如果问题中的代码就是您所拥有的,那么听起来您正在查看 chrome://extensions 页面中的旧错误。当您重新加载扩展程序时,它不会清除错误列表,因此您需要手动执行 - 有一个按钮。

标签: javascript google-chrome-extension undefined


【解决方案1】:

看起来在某个时间点 request.greeting 是未定义的。采用 ?。操作员,请观看ES2020 了解更多信息,如下所示:request.greeting?.text of if (request.greeting && request.greeting.text === "varhello")

【讨论】:

  • 投反对票,因为您提出了一种解决方法,甚至没有尝试调查和解决真正的问题 - 收到了错误的对象。
  • 感谢您的回答,如果您的意思是使用 : (request.greeting && request.greeting.text === "varhello") 我试过了,但仍然与以前的 API 一样,但未定义仍然存在.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
相关资源
最近更新 更多