我正在为我的项目使用VueJS和Laravel.这个问题最近开始显现,甚至在旧的git分支中也显示出来.
此错误仅在Chrome浏览器中显示.
我chrome.fileSystem在我的应用程序中使用API来打开文件.单击Cancel文件选择器对话框的按钮时,会发生错误:
runtime.lastError运行时未选中fileSystem.chooseEntry:用户已取消
如何解决这个错误?
我有一个异步问题(我相信)。sendResponse()在contentscript.js中不等待getThumbnails()返回。
我在popup.js 中发送消息:
chrome.tabs.sendMessage(tabs[0].id, {message: "get_thumbnails", tabUrl: tabs[0].url},
function (respThumbnails) {
const thumbUrl = respThumbnails.payload;
console.log("payload", thumbUrl)
}
);
Run Code Online (Sandbox Code Playgroud)
然后,在contentscript.js我听这条消息:
chrome.runtime.onMessage.addListener(async function(request,sender,sendResponse) {
if(request.message === "get_thumbnails") {
const payload = await getThumbnails();
console.log("thumbPayload after function:", payload)
sendResponse({payload:payload});
}
});
async function getThumbnails() {
let tUrl = null;
var potentialLocations = [
{sel: "meta[property='og:image:secure_url']", attr: "content" },
{sel: "meta[property='og:image']", attr: "content" },
];
for(s of potentialLocations) { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个扩展,它在其内容脚本和后台服务工作人员(清单 V3)之间进行大量消息传递,并且我注意到新的基于 Promise 的 V3 API 存在一个奇怪的问题,特别是 sendResponse () 功能。
对于需要响应的 API 调用,一切正常。但是,如果我不需要响应并且不提供回调函数或使用 Promise 的 .then() 方法(或 async/await),则会引发 Promise 错误 - 它表示“消息端口在响应之前关闭”已收到。”
奇怪的是,调用仍然有效,所以我猜这个错误更像是一个警告。
代码示例:
在内容脚本中,向后台发送消息:
chrome.runtime.sendMessage({ type: 'toggle_setting' })
Run Code Online (Sandbox Code Playgroud)
后台脚本获取消息并执行某些操作,然后退出而不发送响应:
chrome.runtime.onMessage.addListener( (message, sender, sendResponse) => {
if (message.type === 'toggle-setting') {
//* do whatever it does
}
})
Run Code Online (Sandbox Code Playgroud)
该后台代码是引发上述错误的原因。但是,如果我向其中添加一行并调用不带参数的 sendResponse() 函数,则不会发生错误。
chrome.runtime.onMessage.addListener( (message, sender, sendResponse) => {
sendResponse()
if (message.type === 'toggle-setting') {
//* do whatever it does
}
})
Run Code Online (Sandbox Code Playgroud)
因此,这消除了错误消息,但我不太清楚为什么在不需要或不需要响应时有必要这样做。是否有其他方法可以向基于 Promise 的 V3 API 发出信号,或者现在是否有必要调用 sendResponse(),即使您不需要?
javascript google-chrome-extension chrome-extension-manifest-v3
我在简单的 chrome 扩展中收到此错误。我正在尝试将一些消息从 background.js 传递到我的内容脚本。第一条消息将毫无问题地发送,但第二条消息给我这个错误_generated_background_page.html:1 Unchecked runtime.lastError: The message port closed before a response was received.
我需要在收到第一条消息后传递内容脚本的响应,这是因为我需要从中删除事件侦听器,webRequest.onCompleted否则我将遇到消息传递的循环问题。我不确定我是否在removeListener功能上也做得很好。
这是我的代码,任何帮助将不胜感激
内容脚本.js
const m3u8 = new M3U8();
console.log(m3u8);
chrome.runtime.onMessage.addListener( message => {
console.log(message);
chrome.runtime.sendMessage({status: 'ok'})
const download = m3u8.start(message.url);
download.on("progress", progress => {
console.log(progress);
}).on("finished", finished => {
console.log(finished);
}).on("error", error => {
console.log(error);
});
});
Run Code Online (Sandbox Code Playgroud)
背景.js
const sendURL = (request) => {
chrome.tabs.sendMessage(request.tabId, {url: request.url}, response => {
if( response.status === 'ok' ){
chrome.webRequest.onCompleted.removeListener( sendURL )
} …Run Code Online (Sandbox Code Playgroud)