gpt4 book ai didi

node.js - 不是字符串或缓冲区。模块加密

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:03 27 4
gpt4 key购买 nike

我在模块 util.js 上创建了一个函数 myHash() 以在我的代码的不同部分重用,但无法正常工作。

错误信息: this._binding.update(data, encoding);不是字符串或缓冲区。

app.js

...
GLOBAL.util = require('./util');
GLOBAL.dateFormat = util.dateFormat;
GLOBAL.myHash = util.myHash; /***** My function *****/
...

app.post('/test', function(req, res){
...
var pass_shasum = myHash('test');
...

util.js

var crypto = require('crypto');
function myHash(msg) {
return crypto.createHash('sha256').update(msg).digest('hex');
}

exports.util = {
...
myHash: myHash(),
...
};

有什么建议吗?


解决方案:

修改util.js

var crypto = require('crypto');

/* Define var */
var myHash = function (msg) {
return crypto.createHash('sha256').update(msg).digest('hex');
};

module.exports = {
...
myHash: myHash, /* Is a variable not a method. Thanks @robertklep */
...
};

最佳答案

您不应该在 exports 语句中执行该函数(msg 参数将是 undefined,它确实不是字符串或缓冲区):

exports.util = {
...
myHash: myHash, // don't use myHash()
...
};

此外,当您像这样导出代码时,您必须像这样要求它:

GLOBAL.util = require('./util').util;

(尽管我建议不要使用全局变量)。

如果你不想要额外的 .util,像这样导出:

module.exports = {
...
myHash : myHash,
...
};

关于node.js - 不是字符串或缓冲区。模块加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19214043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com