摘要:
在我们chrome插件开发中的消息通讯期间,时常会遇到异常情况;下面列举一些常遇到的错误,以及大致原因;我们可以做个中文转换器来让错误提示的更明确。
一、常见错误
1、Could not establish connection. Receiving end does not exist.
导致原因:网页加载在插件之前;
例如:先打开了网页,后加载插件;此时背景脚本chrome.runtime.sendMessage(tabId) 发送到内容脚本就会出现这个错误
2、A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
导致原因:响应之前消息通道被关闭, 疑似当前页面被刷新;
例如:背景脚本chrome.runtime.sendMessage(tabId) 发送到内容脚本;此时内容脚本还未调用sendResponse回调函数,这时候刷新网页,那这个消息通道就被强制关闭了;背景脚本也就会出现这个错误
二、如何捕获错误
chrome.runtime.sendMessage(request, response => {
if (chrome.runtime.lastError) { // 处理错误
const errorMessage = chrome.runtime.lastError.message
console.log('捕获到错误:', errorMessage)
} else {
ctx.callback(response)
}
})