Hi,
I am using a status node to check if an exec is running. If the exec is started or killed the status is known.
However if the exec has not been started or killed, the message.status.text doesn't exist and then I get an error.
I did try this function but it doesn't work.
if ((msg.status.text) !== undefined)
var test = msg.status.text;
msg.payload = "something....."
the error is: "TypeError: Cannot read properties of undefined (reading 'text')"
How do you detect if msg.status.text is undefined?
Thanks for helping
I'm not an expert.
if ((msg.status.text) !== undefined)
var test = msg.status.text;
msg.payload = "something....."
I think you need to use { }
around it.
But there again, maybe not.
Just your formatting - to me - is confusing.
Implies you want to do this:
if ((msg.status.text) !== undefined)
{
// not set.
var test = msg.status.text;
msg.payload = "something....."
}
// Now it is set.
Maybe:
But it could be
if ((msg.status.text) !== undefined)
{
// If not defined.
var test = msg.status.text;
} // If it is defined.
msg.payload = "something....."
But you may need to post a bit more of the code.
Because I am not seeing how/where test
is used/needed.
Maybe - in retrospect:
if ((msg.status.text) !== undefined)
{
// If not defined.
msg.status.text = "Not defined";
} // If it is defined.
// msg.status.text is defined and can now be handled downstream from here.
But I don't know exactly if this will help or not.
if (msg.status?.text !== undefined) {
...
}
Thanks for highlighting the missing braces. It was a copy past mistake.
this is the correct one:
if ((msg.status.text) !== undefined) {
var test = msg.status.text;
msg.payload = "Process not running"
}
return msg;
the issue is that the condition "undefined" is wrong. The code still try to read the msg.status.text which doesn't exists.
But where is test
used?
Can you post a bit more of the flow?
Maybe like the exec
node and status
node?
This seems to give a different result. Let me investigate it better. Thanks for now...
Perhaps I should have given some more details:
Your initial check stumbles over the fact that you can test for .text
only if .status
exists.
Yet if .status
is missing, it's obvious that .text
will be undefined
as well.
How's ?.
(optional chaining) working?
The optional chaining (?.
) operator accesses an object's property or calls a function. If the object accessed or function called is undefined
or null
, it returns undefined
instead of throwing an error.
1 Like
Thanks a million for the solution and for the explanation. It is now working correctly.
1 Like
Good to hear!
It's nice when you get a solid answer to a question/problem.