启用“存储”权限后,调试模块在事件页面中不起作用

时间:2018-05-16 18:44:22

标签: javascript google-chrome google-chrome-extension

我有一个非常简单的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中解压缩加载扩展程序,以便自己查看问题。

1 个答案:

答案 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是异步的,模块似乎是以同步的方式使用它,这就是它不起作用的原因。

原来是调试模块中的错误。