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

Node.js 不是字符串或缓冲区。模块加密,node.js,node-crypto,Node.js,Node Crypto,我在模块util.js上创建了一个函数myHash() 错误消息:此。_binding.update(数据、编码);不是字符串或缓冲区。 app.js ... GLOBAL.util = require('./util'); GLOBAL.dateFormat = util.dateFormat; GLOBAL.myHash = util.myHash; /***** My function *****/ ... app.post('/test', function(req, res){

我在模块
util.js
上创建了一个函数
myHash()

错误消息:
此。_binding.update(数据、编码);不是字符串或缓冲区。

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');
...
var crypto = require('crypto');
function myHash(msg) {
    return crypto.createHash('sha256').update(msg).digest('hex');
}

exports.util = {
    ...
    myHash: myHash(),
    ...
};
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 */
    ...
};
util.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');
...
var crypto = require('crypto');
function myHash(msg) {
    return crypto.createHash('sha256').update(msg).digest('hex');
}

exports.util = {
    ...
    myHash: myHash(),
    ...
};
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 */
    ...
};
有什么建议吗


解决方案: 修改util.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');
...
var crypto = require('crypto');
function myHash(msg) {
    return crypto.createHash('sha256').update(msg).digest('hex');
}

exports.util = {
    ...
    myHash: myHash(),
    ...
};
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
,它实际上不是字符串或缓冲区):

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

GLOBAL.util = require('./util').util;
module.exports = {
  ...
  myHash : myHash,
  ...
};
(尽管我建议不要使用globals)

如果不需要额外的
.util
,请按如下方式导出:

GLOBAL.util = require('./util').util;
module.exports = {
  ...
  myHash : myHash,
  ...
};

对我来说很好。回溯是否实际指向
myHash
中的代码?在post方法“test”中,我更新了我的问题。我在util.js中声明了var myHash。我为我的问题添加了答案。谢谢@robertklep