我正在尝试在附加组件上使用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不是函数
有人可以帮助我吗?
非常感谢。
答案 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
或一个全新的模块中。