Errors during Execution
During execution, errors might be generated from various places. Common errors and how to deal with them is documented here.
Cannot find module 'x'
Happens when a Node.js action contains a requirement for a module which has not been installed. Fix:
- install the module with "
npm install x" or via the "Plugins" - "Bridges" - "Node Bridge" menu.
- check your node-module-path ("Module Path" field in "Extras" - "Settings" - "Execution" - "External Script Interpreters") or the shell environment variable named "
- check if the modules was actually installed in the folder given by the module-path (noticing that there are both a global "node_modules" and a per-user "node_modules" folder)
Notice: a change of the module-path, does not affect already running node.js bridge connections. You have to close all current (node.js) connections and retry the action.
No value for input "x" of step "Y"
A step's input pin has no input data. This happens if a step was started and a required input pin is missing. Notice, that this error is triggered only when a step-activity was triggered due to either the autostart flag (of the step) or by a trigger input value, or if the pin is non-triggering and another pin caused the trigger. And when the step's action accesses the input pin's data value.
In an elementary action, you can check for a pin to have received a value via the "
- provide an input value either by:
- setting a default value for the pin in the step's action-block definition (the schema)
- giving the step's pin a freeze value (constant)
- connecting the step's input pin to another step's output pin or one of the compound action's inputs
- check for the presence of a value (in an elementary block)
- change the pin type to "parameter-pin" (especially if the step is in a loop)
Output value x (x-class) is not compatible with datatype of pin "y" (y-class)
An invalid datum (not matching the pin's type) was written to an output pin, typically inside an action with elementary code.
- check if the correct value is written to the pin
- change the output pin's datatype to match the value's
- change the output pin's datatype to Any
- disable typechecks (usually not a good idea)
Telegram-data for non-triggering pin "x" of inactive step "Y"
A telegram input pin (also called "mailbox pin") received a value after the step has already finished its execution. This is reported for non-triggering pins only - if it was triggering, a new activity would have been started. However, as the pin is non-triggering, the value is lost and there is noone to handle it.
- check if a mailbox pin is really required
- either make sure that the mailbox input pin receives its value earlier (i.e. while the step is still being executed), or the target step is stopped later,
- or set the "ignore exception" behavior of the target step (see note below)
Notice: this error represents a special situation, in that actually neither the sending step, nor the mailbox-target step are individually responsible for the error. Also, because both have already finished, the error cannot be presented at either step's exceptionOutput pin, as this would lead to the strange situation, that both their trigger-output and their exception output pin's would be firing. Which would be illegal behavior. Therefore, the error is reported to the containing compound action, as its network is probably wrong.
In principle, this argument would also apply to the "ignore exceptions" flag. However, users found it convenient, to be able to ignore this error on the step level, instead of the compound level. Therefore a slight different semantic is implemented for this very error, in that it is ignored iff the target mailbox pin's step has the ignoreException flag set. Any errors internal in the target step are still reported via its exception output pin, if present.
Trying to modify readonly variable: "x"
The variable "x" has the read-only attribute.
- change the variable's "R/W" (read-write) attribute