我有一个非常简单的Chrome扩展程序,其中包含使用debug模块的事件页面:
localStorage.debug = '*';
var debug = require('debug')('test');
debug('Test message');
console.log('debug:', localStorage.debug);
console.log('enabled:', debug.enabled);
在我的清单中,我有:
"permissions": ["storage"],
"background": {
"scripts": [
"main/build.js"
]
},
当我检查事件页面时,输出为:
debug: *
enabled: false
但是,如果我将权限更改为:
"permissions": []
然后重新加载扩展,输出为:
test Test message +0ms
debug: *
enabled: true
为什么会这样?
我使用扩展名创建了archive。随意解压缩并在Chrome中解压缩加载扩展程序,以便自己查看问题。
答案 0 :(得分:1)
在build.js
中挖掘调试模块的源代码后,我发现:
exports.storage = 'undefined' != typeof chrome
&& 'undefined' != typeof chrome.storage
? chrome.storage.local
: localstorage();
显然它会检测到chrome.storage.local
是否可用并使用 it 。在模块的GitHub存储库中有一个issue。
但是,chrome.storage.local
是异步的,模块似乎是以同步的方式使用它,这就是它不起作用的原因。
原来是调试模块中的错误。