导出功能的问题

Problems to export function

本文关键字:问题 功能      更新时间:2023-09-26

我正在尝试在附加组件上使用斯坦福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的数字。

但是当我添加斯坦福图书馆的代码时,它停止工作,我收到以下错误

类型错误:t.generateKey 不是函数

有人可以帮助我吗?

谢谢。

加密库会用自己的导出覆盖您的导出:

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

我还找不到在哪里或是否记录了它,但是在每个SDK模块中都有一个module对象,其中一个属性是module.exports,它以exports的别名开头。

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

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