我在模块util.js
上创建了一个函数myHash()
,以便在我的代码的不同部分重用但不能正常工作。
错误讯息: this._binding.update(data, encoding); Not a string or buffer.
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 */
...
};
答案 0 :(得分:3)
您不应该在exports语句中执行该函数(msg
参数将是undefined
,它确实不是字符串或缓冲区):
exports.util = {
...
myHash: myHash, // don't use myHash()
...
};
此外,当您像这样导出代码时,您必须像这样要求:
GLOBAL.util = require('./util').util;
(虽然我建议不要使用全局变量)。
如果您不想要额外的.util
,请按以下方式导出:
module.exports = {
...
myHash : myHash,
...
};