не работает chrome.runtime.sendMessage в расширении для chrome
у меня вопрос такой - не передаются данные из фонового скрипта background.js в скрипт исполняющийся на странице браузера widjet.js.
вот такой манифест:
{
"permissions": ["storage","scripting","activeTab","tabs","unlimitedStorage","webRequest","scripting"],
"background": {
"service_worker": "background.js"
},
"content_scripts": [{
"run_at": "document_idle",
"matches": ["<all_urls>"],
"js": ["main.js","widjet.js"],
"css": ["css.css"]
}],
"manifest_version": 3,
"name": "test",
"description": "test",
"version": "1.0.0",
"homepage_url": "https://example.com",
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"action": {
"default_popup": "index.html",
"default_icon": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
}
}
в background.js у меня стоит слушатель вот такой
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
sendResponse('Я работаю!');
});
а запрос в него направляется из widjet.js так:
chrome.runtime.sendMessage('getToken',(response) => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError);
} else {
console.log(response);
}
});
но по какой то причине в консоли просто если выводить response выводит undefined, а если как я подправил lastError, то будет "message: 'The message port closed before a response was received.'"
я подобное делал в firefox расширении, и там оно работало примерно так же, сделав поправку на хром этот код почему то не хочет корректно передавать данные, скажите пожалуйста что я упустил? есть какая то ещё особенность? по тому что в документации к апи хрома оно показано что нужно так делать, но почему то не работает