Устранение неполадок при отладке скриптов содержимого в расширении chrome с использованием require.js
Для загрузки модулей в скриптах содержимого я использую следующий код (источникhttp://prezi.com/rodnyr5awftr/requirejs-in-chrome-extensions/):
require.load = function (context, moduleName, url) {
var xhr;
xhr = new XMLHttpRequest();
xhr.open("GET", chrome.extension.getURL(url) + '?r=' + new Date().getTime(), true);
xhr.onreadystatechange = function (e) {
if (xhr.readyState === 4 && xhr.status === 200) {
eval(xhr.responseText);
context.completeLoad(moduleName)
}
};
xhr.send(null);
};
Проблема возникает при отладке через консоль Chrome. Всякий раз, когда возникает ошибка в одном из моих модулей, он просто сообщает об ошибке, произошедшей в анонимной функции, но не сообщает мне, в каком модуле require.js или строке в этом модуле произошла ошибка, но вместо этого всегда указывает на строку eval в вышеуказанный скрипт.
Так как многие люди используют различные варианты приведенного выше кода при использовании require.js с расширениями chrome, должен быть простой способ получить больше информации в консоли отладки, я просто не знаю, что это такое :).
Спасибо за вашу помощь!!
ОБНОВЛЕНИЕ 4/1: Изменение оператора eval (), приведенного выше, на использование Function (), похоже, решило проблему, заключающуюся в том, что консоль chrome добавляет информацию о дополнении. (кредит на эту работу идет к этомувопрос).
Я понимаю, что две функции не являются полностью взаимозаменяемыми (см.этот вопрос). Если кто-нибудь знает о каких-либо подводных камнях при использовании Function () вместо eval () в приведенном выше коде, пожалуйста, дайте мне знать !!