Неперехваченное исключение: неизвестно (не может быть преобразовано в строку)

Я пишу код для надстройки браузера Firefox и пытаюсь обновить значение файлов cookie с помощью chrome API. При вызове метода chrome.cookies.set он возвращает следующую ошибку на консоли.

Ошибка: необработанное исключение: неизвестно (невозможно преобразовать в строку)

var finalCookieObj = { 
    domain: ".qa.soul.com", 
    name: "aaa", 
    value: "as", 
    path: "/", 
    httpOnly: false, 
    url: "qa.soul.com/", 
    expirationDate: 1459788960 
};

chrome.cookies.set(finalCookieObj, function(cookie) {
    console.log('added cookie');
});

Справочник по API: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/set


person sfbayman    schedule 03.04.2016    source источник
comment
Поделитесь значением finalCookieObj, так как, скорее всего, проблема связана с одним из полей этого объекта.   -  person dovetalk    schedule 03.04.2016
comment
Объект { домен: .qa.soul.com, имя: aaa, значение: as, путь: /, httpOnly: false, URL: qa.soul.com/page1, expireDate: 1459788960 }   -  person sfbayman    schedule 03.04.2016
comment
Что такое chrome в этом примере? Я спрашиваю только потому, что вы говорите, что используете его для аддона FF?   -  person Andy    schedule 03.04.2016
comment
В файле manifest.json присутствует следующая запись разрешения. разрешения: [tabs, activeTab, webRequest, webRequestBlocking, cookies, ‹all_urls›, *]   -  person sfbayman    schedule 03.04.2016


Ответы (1)


Я думаю, проблема в том, что url должен быть полным URL-адресом, включая протокол. Эта версия работает:

var finalCookieObj = { 
    domain: ".qa.soul.com", 
    name: "aaa", 
    value: "as", 
    path: "/", 
    httpOnly: false, 
    url: "https://qa.soul.com/", 
    expirationDate: 1459788960 
};

chrome.cookies.set(finalCookieObj, function(cookie) {
    console.log('added cookie');
});

Я обновлю документы, чтобы четко указать это.

Кроме того, асинхронные функции сообщают об ошибках, устанавливая chrome.runtime.lastError.: всегда полезно проверить это в обратном вызове.

Забавно, однако, я вижу другой вывод консоли для вас. Я вижу такую ​​ошибку:

[Exception... "Component returned failure code: 0x804b000a 
(NS_ERROR_MALFORMED_URI) [nsIIOService.newURI]"  nsresult:
"0x804b000a (NS_ERROR_MALFORMED_URI)"  location: "JS frame
:: resource://gre/modules/NetUtil.jsm :: NetUtil_newURI ::
line 191" data: no]

... который включает стек вызовов, содержащий NetUtil_newURI(), этого было достаточно, чтобы указать на url как на проблему. Какую консоль вы смотрите?

person wbamberg    schedule 09.04.2016
comment
Спасибо @wbamberg за ответ. Я взял ночную сборку Firefox версии 48, и она отлично работает без изменений кода. Но он не работает в рабочей версии 45. Будет ли это исправлено в текущей версии? Я имел в виду веб-консоль Firefox. - person sfbayman; 11.04.2016
comment
Я все еще получаю сообщение об ошибке после обновления значения URL-адреса с полным URL-адресом, включая протокол. Пожалуйста, проверьте скриншот. dropbox.com/s/ a96g66bj73uno8d/ - person sfbayman; 11.04.2016
comment
Выходные данные веб-консоли Firefox: снимок экрана: dropbox.com/s/tt2hgglic56kq8c/ - person sfbayman; 11.04.2016
comment
у вас была возможность увидеть скриншот? - person sfbayman; 23.04.2016