如果我使用不带requirejs的log4javascript,那么所有内容(包括页内附加程序)都会按预期工作。
使用requirejs时,这会有效(会出现一个带警告的弹出窗口):
var log = log4javascript.getDefaultLogger();
log.warn("This is a test error message.");
但这不起作用(不显示页面区域):
var log4j = log4javascript.getLogger();
var log4jInPageAppender = new log4javascript.InPageAppender();
log4j.addAppender(log4jInPageAppender);
log4j.warn("This is a warning!");
它像这样收缩:
requirejs.config({
shim: {'log4javascript': {exports: 'log4javascript'}
}
});
似乎为log4javascript正确定义了所有内容,因此我的log4j和log4jInPageAppender变量设置为有效值。
答案 0 :(得分:3)
问题是InPageAppender
依赖于log4javascript自己的页面加载处理代码来知道它是否可以开始绘制自己。通过RequireJS加载时,页面已经加载,并且log4javascript的页面加载处理代码永远不会运行。
您可以致电log4javascript.setDocumentReady()
来解决这个问题。最明智的做法似乎是在垫片init()
函数中,但我不是RequireJS的专家,所以可能有更好的方法:
requirejs.config({
shim: {
'log4javascript': {
exports: 'log4javascript',
init: function() {
log4javascript.setDocumentReady();
}
}
}
});