我的节点红每天都会多次崩溃。 我认为其中一个问题可能是我正在做的http请求。
我在JSON中请求输出网页。 但有时我会在日志中看到HTML中的错误。 网页服务器端可能有问题,但是我的流程错误了。
SyntaxError: undefined:1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> ^ Unexpected token <
2 Jan 15:26:26 - [error] [function:Filter temperatures] SyntaxError: undefined:1
我可以编辑我的函数以便能够过滤掉它,并希望不再崩溃节点红色吗?
这是我用来解析JSON的函数的一个例子。
datarequest = JSON.parse(msg.payload);
msg1 = {};
msg1.payload = datarequest.data.valvesetat.bypass;
return [msg1];
答案 0 :(得分:1)
看起来网页返回的内容不是JSON(我猜是某种错误),JSON.parse()
无法解析它。
将JSON.parse()
部分包含在try/catch
块中,并管理网页的响应。
答案 1 :(得分:0)
如果JSON周围的HTML中没有{
个字符,您可以尝试:
msg.payload = msg.payload.replace(/^.*?(\{/{.*\}).*/, '$1');
在致电JSON.parse
之前。