Skip to main content

Troubleshooting a Flow

Learn how to fix errors with your flows

Written by Holly Conrad Smith

Flows are extremely powerful. With great power comes great responsibility - sometimes flows can cause errors in your projects.

Learn how to find and fix flow errors for optimal project performance.

How do I know something isn't working?

Flow Error

If there is a flow error, the affected feature will appear neon magenta / bright pink on the map.

Engine Failure

Sometimes the flow might break the rendering for some or all of the geometries in your project. You will see an engine status error in the bottom left corner of your Giraffe tab.

Try pausing and re-starting the engine (click the pause button to the left of the error text).

If pause and restart doesn't work, try removing the flow from geometries in the project.

Crash

Sometimes, a flow error will completely crash your Giraffe tab. (Usually this happens when you have self-referencing nodes or a bad loop).

Try refreshing the tab. If you are unable to get back in, reach out to support for assistance retrieving the file.

Troubleshooting steps

Spectacles

Turn on the Spectacles from the top bar. This displays the state of all nodes in the Flow.

Review Warnings and Errors

Any nodes with an error will appear in Red. Red nodes mean the entire flow is failing due to the error.

Any nodes with a warning will appear in orange. Orange nodes mean that the flow is still able to complete, but some information may be missing.

Read the Status

If a node has an error or a warning, you may want to use the Reader node to review the status.

Add the Reader node to the Status (S) output of the node with the error/warning to see the message.

Pause Nodes

Try pausing a specific node to see if it is causing the issue. Right click on the node title -> Disable.

Pause Engine

Pause the entire Giraffe engine to stop all geometry generation.

Click the pause button in the top bar of the flow editor.

Recompute

If processing seems stuck, try clicking recompute. This stops the flow process and restarts it.

Refresh Tab

If all else fails, try refreshing your browser tab.

Review Errors and Warnings

Understanding error codes can help you troubleshoot what is not working

Error

What it means

How to fix

Cannot read properties of undefined

Missing inputs

Add the correct input data by connecting another node

Missing required inputs: <name> (orange warning)

A required input has nothing connected and no default value. The flow can still run, but output may be incomplete.

Connect an edge to the named input, or set a default value on the node

Node type not found / Unknown node type: "<type>"

The node's type no longer exists in Giraffe - usually a retired node kept from an older flow, or an unsupported node from an import

Right-click the node to see if an upgrade is offered; otherwise delete it and rebuild with a current node

Division by zero (warning)

A Divide (or similar math) node got 0 as its denominator. The node still returns a result, often Infinity

Check the upstream value feeding the denominator and guard against zero

Input must be a polygon / Feature must be a polyline (and similar "must be a ___" messages)

The node received the wrong geometry type - e.g. a line where a polygon was expected

Trace the input back to where the geometry type changed and add a conversion or filter node

Polygon has no edges / Centroid could not be computed for this geometry / Could not fit a rectangle inside the polygon

The input geometry is empty, degenerate, or invalid (e.g. zero area)

Check the source geometry is valid and non-empty before this node

Count must be greater than 0 / Length must be greater than 0

A numeric parameter that must be positive is 0 or negative

Fix the parameter value, or check the upstream node/slider feeding it

Failed to parse geometry: <detail>

The node received data that isn't valid geometry

Check the data source or import step feeding this node

Flow with id <id> not found / No flow id provided

A Function (sub-flow) node points to a flow that's been deleted, or has none selected

Open the node's settings and select a valid flow

Recursion is not supported

A flow calls itself, directly or through another flow

Remove the circular reference between flows

Usage <name> not found / No grid found in project boundary

A Usage or Project node references a usage or grid that no longer exists in this project

Re-select a valid usage/grid on the node

Output <key> is not a number / Input list must contain either all numbers or all vectors

A math node received mixed or non-numeric data

Check the upstream data type; make sure list items are consistently numbers or all vectors

unsupported operator "<operator>". Use one of: ...

A "modify property" node was given an operator it doesn't recognize

Pick one of the operators listed in the error message

Graph contains a cycle

Two or more nodes are wired into a loop that isn't a supported iteration structure

Remove the circular connection, or rebuild the loop with a Map/Reduce/Iterate node

No features were generated. Please check the parameters. (warning)

The generative logic ran, but the input geometry/parameters left no room for a valid result

Loosen the parameters, or check the input geometry is large/valid enough

null (shown as a node's output value, not a labeled error)

The node's output is JavaScript's null, usually because an upstream calculation had nothing valid to return

Check the input data type and/or logic to ensure the node can process a result

Typical Problems

Missing an Input value

If a required input has nothing connected to it, the node shows an orange warning reading Missing required inputs: <name>. The flow can often still run, but the output may be missing data. Connect an edge to the named input, or set a default value on the node itself.

Data type mismatch

Nodes expect specific data types - a polygon, a number, a list of vectors, and so on. Feeding in the wrong type produces errors like Input must be a polygon, Feature must be a polyline, or Output is not a number. Trace the connection back to where the type changed and add a conversion or filter node, or check the source data.

Providing a List when Single Object is expected

Some nodes expect a single feature or value, not a list. Passing a list in usually shows up as Cannot read properties of undefined, because the node tries to read a property that only exists on a single object. Add a node like First or Get Item before the input, or check whether the upstream node is unexpectedly outputting a list.

If a Fix Doesn't Seem to Work

Before switching to a different node or a different approach, confirm the change you already made is actually reaching the geometry you're looking at.

  1. Turn on the Spectacles and check that the node you just added or edited shows a result, not an error or warning.

  2. If your flow branches, confirm which branch actually feeds the write features node connected to the geometry you see on the map. A change on the wrong branch won't show up, even if the node itself is set up correctly.

  3. Use the Reader node on the output you just changed to confirm the value is what you expect, before assuming the whole approach is wrong.

If a change genuinely isn't working after checking the above, say what you checked and why before trying something different. Switching to an unrelated node without explaining the change makes a flow harder to debug, for you and for anyone helping you with it.

Did this answer your question?