我正在尝试使用公钥加密(tweetnacl)验证文档。
我知道you can add commonjs modules可以验证功能,但还不能。

{
 "_id": "_design/validate_update",
 "language": "javascript",
 "validate_doc_update":
           "function(newDoc, oldDoc, userCtx){
                verify=require('lib/validation').sign.detached.verify;
                if(verify(newDoc.message, new.Doc.signature, oldDoc.publicKey)){
                     return true;
                }
               }",
 "lib": {
     "validation": "exports.nacl=(function(nacl){..... })"
 }
}


当我这样做时,我得到错误:

  Module require('lib/validation') raised error (new TypeError("func.apply is not a function", "/usr/local/share/couchdb/server/main.js", 1181))


我想我必须以某种方式更改tweetnacl代码以将其解释为commonjs模块?

最佳答案

似乎将NaCl lib初始化为commonjs模块失败了,因为它具有匿名功能-尝试提供NaCl exports作为上下文:

"lib": {
 "validation": "(function(nacl){..... })(exports)"
}

10-04 15:30