出口功能有问题

时间:2013-10-31 12:03:09

标签: javascript cryptography firefox-addon

我正在尝试在附加组件上使用Stanford Javascript Crypto Lib,但在将代码粘贴到模块上时遇到问题。

我在这里做了一个测试项目:

https://builder.addons.mozilla.org/package/209559/latest/

main函数调用teste.js中描述的函数。

如果我只在teste.js上留下这段代码

exports.generateKey = generateKey;
/***
 *  Function test (I know that I could not to generate a constant key)
 ***********************************************/
function generateKey(){
    return 123455;
}

main函数(在main.js上)找到函数generateKey并在控制台中显示数字123455.

但是当我添加Stanford Lib的代码时,它停止工作,我得到了跟随错误

  

TypeError:t.generateKey不是函数

有人可以帮助我吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

加密库overrides你的出口有自己的出口:

if(typeof module != 'undefined' && module.exports){
  module.exports = sjcl;
}

我还无法找到记录的位置,但在每个SDK模块中都有一个module对象,其中一个属性为module.exports,它以{{1}的别名开头}。

因此,未经修改的加密库已经是可加载的,并且完全覆盖了之前对exports的添加。

我建议不要触摸加密库源并按原样使用它(例如命名库exports并像sjcl.js一样使用它)并定义包装函数,例如require("./sjcl").encrypt(...),在generateKey或一个全新的模块中。