ERR wrong number of arguments for 'hmset' command - node.js

I have the following code:
setOnOrder = (map) ->
console.log map
if _.isEmpty map
Promise.resolve()
else
hmsetPr "onorder.tmp", map
onOrder = (req, res, next) ->
console.log req.query
if req.query.syncStart
delPr "onorder.tmp"
.then -> sendOK(res)
.catch next
else if req.query.syncComplete
renamePr("onorder.tmp", "onorder")
.then -> sendOK(res)
.catch next
else
onOrderMap = _(req.body)
.groupBy( (r) -> r.sku )
.mapValues( (v) -> JSON.stringify(v) )
.value()
console.log "sync.onorder #{_.size(onOrderMap)} skus"
setOnOrder onOrderMap
.then -> sendOK(res)
.catch next
where map is like:
{ 'N52Z-LH1': '[{"doCref":"E3320","doAccount":"EVE001","sku":"N52Z-LH1","crDate":"20150703","crTime":"09:52:52","reqQty":150,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'N52Z-LH2': '[{"doCref":"E3320","doAccount":"EVE001","sku":"N52Z-LH2","crDate":"20150703","crTime":"09:52:52","reqQty":150,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'N52Z-LH3': '[{"doCref":"E3320","doAccount":"EVE001","sku":"N52Z-LH3","crDate":"20150703","crTime":"09:52:52","reqQty":150,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'N54Z-BL1': '[{"doCref":"E3320","doAccount":"EVE001","sku":"N54Z-BL1","crDate":"20150703","crTime":"09:52:52","reqQty":100,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA01-MGR1': '[{"doCref":"E3321","doAccount":"ARM001","sku":"SA01-MGR1","crDate":"20150703","crTime":"15:47:52","reqQty":160,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA01-MGR2': '[{"doCref":"E3321","doAccount":"ARM001","sku":"SA01-MGR2","crDate":"20150703","crTime":"15:47:52","reqQty":320,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA01-MGR3': '[{"doCref":"E3321","doAccount":"ARM001","sku":"SA01-MGR3","crDate":"20150703","crTime":"15:47:52","reqQty":320,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA01-MGR4': '[{"doCref":"E3321","doAccount":"ARM001","sku":"SA01-MGR4","crDate":"20150703","crTime":"15:47:52","reqQty":240,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA01-MGR5': '[{"doCref":"E3321","doAccount":"ARM001","sku":"SA01-MGR5","crDate":"20150703","crTime":"15:47:52","reqQty":80,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA01-MPL3': '[{"doCref":"E3321","doAccount":"ARM001","sku":"SA01-MPL3","crDate":"20150703","crTime":"15:47:53","reqQty":240,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA02-MNA1': '[{"doCref":"E3322","doAccount":"ARM001","sku":"SA02-MNA1","crDate":"20150703","crTime":"15:49:59","reqQty":200,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA02-MNA2': '[{"doCref":"E3322","doAccount":"ARM001","sku":"SA02-MNA2","crDate":"20150703","crTime":"15:49:59","reqQty":300,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA02-MNA3': '[{"doCref":"E3322","doAccount":"ARM001","sku":"SA02-MNA3","crDate":"20150703","crTime":"15:49:59","reqQty":200,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA40-MBL5': '[{"doCref":"E3323","doAccount":"ARM001","sku":"SA40-MBL5","crDate":"20150703","crTime":"15:51:46","reqQty":25,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]',
'SA40-MNA5': '[{"doCref":"E3323","doAccount":"ARM001","sku":"SA40-MNA5","crDate":"20150703","crTime":"15:51:46","reqQty":25,"recQty":0,"reqDate":"20150703","recDate":"","cmpLtd":"F"}]' }
but everytime i try to set it in redis, I get the following traceback:
http://localhost:3000/sync/onorder Error: ERR wrong number of arguments for 'hmset' command
at JavascriptReplyParser._parseResult (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/redis/lib/parsers/javascript.js:43:16)
at JavascriptReplyParser.try_parsing (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/redis/lib/parsers/javascript.js:114:21)
at JavascriptReplyParser.run (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/redis/lib/parsers/javascript.js:126:22)
at JavascriptReplyParser.execute (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/redis/lib/parsers/javascript.js:107:10)
at Socket.<anonymous> (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/redis/index.js:131:27)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:146:16)
at Socket.Readable.push (_stream_readable.js:110:10)
at TCP.onread (net.js:523:20)
From previous event:
at ret (<anonymous>:8:21)
at setOnOrder (/home/khine/Sandboxes/node-blade-boiler-template/app/controllers/sync.coffee:277:5)
at onOrder (/home/khine/Sandboxes/node-blade-boiler-template/app/controllers/sync.coffee:295:5)
at Layer.handle [as handle_request] (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/layer.js:95:5)
at next (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/layer.js:95:5)
at /home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:330:12)
at next (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:271:10)
at Function.handle (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:176:3)
at router (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:46:12)
at Layer.handle [as handle_request] (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:312:13)
at /home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:330:12)
at next (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:271:10)
at urlencodedParser (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/body-parser/lib/types/urlencoded.js:81:44)
at Layer.handle [as handle_request] (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:312:13)
at /home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:330:12)
at next (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/express/lib/router/index.js:271:10)
at /home/khine/Sandboxes/node-blade-boiler-template/node_modules/body-parser/lib/read.js:129:5
at invokeCallback (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/body-parser/node_modules/raw-body/index.js:262:16)
at done (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/body-parser/node_modules/raw-body/index.js:251:7)
at Gunzip.onEnd (/home/khine/Sandboxes/node-blade-boiler-template/node_modules/body-parser/node_modules/raw-body/index.js:308:7)
at emitNone (events.js:72:20)
at Gunzip.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at doNTCallback2 (node.js:441:9)
at process._tickDomainCallback (node.js:396:17)
any advise on how to resolve this issue?

The issue was I had null values

Related

How to Solved Heroku Argument passed Error?

BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer
at new BSONTypeError (C:\projects\assignment-11-server-site\node_modules\bson\lib\error.js:41:28)
at new ObjectId (C:\projects\assignment-11-server-site\node_modules\bson\lib\objectid.js:66:23)
at ObjectId (C:\projects\assignment-11-server-site\node_modules\bson\lib\objectid.js:26:20)
at C:\projects\assignment-11-server-site\index.js:41:37
at Layer.handle [as handle_request] (C:\projects\assignment-11-server-site\node_modules\express\lib\router\layer.js:95:5)
at next (C:\projects\assignment-11-server-site\node_modules\express\lib\router\route.js:144:13)
at Route.dispatch (C:\projects\assignment-11-server-site\node_modules\express\lib\router\route.js:114:3)
at Layer.handle [as handle_request] (C:\projects\assignment-11-server-site\node_modules\express\lib\router\layer.js:95:5)
at C:\projects\assignment-11-server-site\node_modules\express\lib\router\index.js:284:15
at param (C:\projects\assignment-11-server-site\node_modules\express\lib\router\index.js:365:14)

Error while compiling ejs, the error is on local system

Can anyone help me with below error.
I am getting this error on local but on server its working fine.
Have tried changing include ../PATH/files.ejs to include('../PATH/files.ejs') this removes error but not able to print content on that file.
SyntaxError: Unexpected token . in /PATH/index.ejs while compiling ejs
If the above error is not helpful, you may want to try EJS-Lint:
https://github.com/RyanZim/EJS-Lint
Or, if you meant to create an async function, pass `async: true` as an option.
at new Function (<anonymous>)
at Template.compile (/PATH/node_modules/ejs/lib/ejs.js:626:12)
at Object.compile (/PATH/node_modules/ejs/lib/ejs.js:366:16)
at handleCache (/PATH/node_modules/ejs/lib/ejs.js:215:18)
at tryHandleCache (/PATH/node_modules/ejs/lib/ejs.js:254:16)
at View.exports.renderFile [as engine] (/PATH/node_modules/ejs/lib/ejs.js:459:10)
at View.render (/PATH/node_modules/express/lib/view.js:135:8)
at tryRender (/PATH/node_modules/express/lib/application.js:640:10)
at Function.render (/PATH/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/PATH/node_modules/express/lib/response.js:1012:7)
at ServerResponse.res.render (/PATH/node_modules/express-ejs-layouts/lib/express-layouts.js:77:18)
at res_data (/PATH/front_system.js:248:17)
at /PATH/front_system.js:218:13
at Layer.handle [as handle_request] (/PATH/node_modules/express/lib/router/layer.js:95:5)
at next (/PATH/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/PATH/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/PATH/node_modules/express/lib/router/layer.js:95:5)
at /PATH/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/PATH/node_modules/express/lib/router/index.js:335:12)
at next (/PATH/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/PATH/node_modules/body-parser/lib/types/json.js:110:7)
at Layer.handle [as handle_request] (/PATH/node_modules/express/lib/router/layer.js:95:5)
Resolved by changing:
From
<% include ../PATH/files.ejs %>
To
<%- include('../PATH/files.ejs') %>

filebeat json logs to elasticsearch max size

I am sending the logs produced by my nodejs app using winston
This is my configuration filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/application/*.log
json.keys_under_root: true
output.elasticsearch:
hosts: ["elasticsearch.staging:9200"]
setup.kibana:
host: "kibana.staging:5601"
Logs are written in for example /var/log/application/app-bank.log
I have something like that
{"message":"Application started","level":"info","application":"app-bank","environment":"staging"}
{"message":"Header x-website-name not found","stack":"Error: Header x-website-name not found\n at context.httpApp.use (/usr/src/app/controller/index.js:30:39)\n at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)\n at /usr/src/app/node_modules/express/lib/router/index.js:284:7\n at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)\n at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)\n at context.httpApp.use (/usr/src/app/controller/index.js:25:9)\n at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)\n at /usr/src/app/node_modules/express/lib/router/index.js:284:7\n at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)\n at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)\n at session (/usr/src/app/node_modules/express-session/index.js:468:7)\n at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)\n at /usr/src/app/node_modules/express/lib/router/index.js:284:7","level":"error","application":"app-bank","environment":"staging"}
The first log is received my elasticsearch, but not the second one, I can not see any log, the problem should be because of the stack key I do not know if it because of the format of the stack or the log is passing a certain size.
I fixed it adding
json.add_error_key: true

Parameter error with a script tag and alert

I am getting the following error showing up in my logger.
URIError: Failed to decode param '/%db<script>alert(539043);</script>/'
at decodeURIComponent (<anonymous>)
at decode_param (/usr/src/app/node_modules/express/lib/router/layer.js:172:12)
at Layer.match (/usr/src/app/node_modules/express/lib/router/layer.js:123:27)
at matchLayer (/usr/src/app/node_modules/express/lib/router/index.js:574:18)
at next (/usr/src/app/node_modules/express/lib/router/index.js:220:15)
at app.use (/usr/src/app/app.js:83:9)
at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
at /usr/src/app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
I think this is someone trying to probe my site for some vulnerability. This occurs 2 times every week like clockwork.
Around the same time I get the following error too:
URIError: Failed to decode param '/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd'
at decodeURIComponent (<anonymous>)
at decode_param (/usr/src/app/node_modules/express/lib/router/layer.js:172:12)
at Layer.match (/usr/src/app/node_modules/express/lib/router/layer.js:123:27)
at matchLayer (/usr/src/app/node_modules/express/lib/router/index.js:574:18)
at next (/usr/src/app/node_modules/express/lib/router/index.js:220:15)
at app.use (/usr/src/app/app.js:83:9)
at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
at /usr/src/app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
Is there some sort of way to prevent this? Should I be concerned about this? Is there a standard way of dealing with parameters that are not legitimate.

How to output the process.stderr.write to winston

Using winston loggers to write contents into the files but that works only when customlogger.error is used. If the node is outputting some reference error like below
ReferenceError: aksbd is not defined
at /home/nigilan/Desktop/homepagelogger/app.js:53:20
at Layer.handle [as handle_request] (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/layer.js:95:5)
at next (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/layer.js:95:5)
at /home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/index.js:335:12)
at next (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/index.js:275:10)
at /home/nigilan/Desktop/homepagelogger/app.js:38:5
at Layer.handle [as handle_request] (/home/nigilan/Desktop/homepagelogger/node_modules/express/lib/router/layer.js:95:5)
How to use winston to store the errors like above ?
P.S. Logging the unhandled exception is nodejs server is working fine.
`
function formatArgs(args){
return [util.format.apply(util.format, Array.prototype.slice.call(args))];
}
console.info = function(){
customlogger.info.apply(customlogger, formatArgs(arguments));
};
console.warn = function(){
customlogger.warn.apply(customlogger, formatArgs(arguments));
};`
Here you can also use the default logger of winston instead of your custom logger. The gist code below has the perfect answer for this.

Resources