麻烦调试内容脚本在chrome扩展使用require.js
Trouble debugging content scripts in a chrome extension using 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扩展时使用上述代码的不同变体,必须有一个简单的方法来获得更多的信息在调试控制台,我只是不知道那是什么:)。
谢谢你的帮助!
UPDATE 4/1:改变上面的eval()语句使用Function()似乎已经解决了chrome控制台添加了附加信息的问题。(这项工作的功劳归于这个问题)。
我意识到这两个函数不是完全可以互换的(参见这个问题)。如果有人知道在上面的代码中使用Function()而不是eval()有任何缺陷,请让我知道!!
您可以更改
eval(xhr.responseText);
eval(xhr.responseText + "'n//@ sourceURL=" + url);
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 扩展移相器按钮类不工作
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- TableExport jquery插件:文件名和扩展名问题
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 扩展SVGTextElement时出现Typescript Uncaught TypeError
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- Javascript”;类“;带有参数的扩展
- 试图阻止Chrome通过扩展关闭
- 如何在Chrome扩展程序中使用Require.JS时触发chrome.runtime.onInstall
- 加载带有require的html文件时.js扩展名错误
- Chrome扩展错误:未定义Require
- 无法通过require从扩展文件创建javascript对象
- 为什么不使用webeextension (FireFox的Chrome扩展)定义Require
- 麻烦调试内容脚本在chrome扩展使用require.js
- 使用Require JS扩展主干对象的正确方法
- 扩展数组.原型在Node.js中,从一个require'd文件