Files
EVOLV/wiki/manuals/node-red/runtime-node-js.md
znetsixe 48f790d123
Some checks failed
CI / lint-and-test (push) Has been cancelled
chore: clean up superproject structure
Move content to correct locations:
- AGENTS.md → .agents/AGENTS.md (with orchestrator reference update)
- third_party/docs/ (8 reference docs) → wiki/concepts/
- manuals/ (12 Node-RED docs) → wiki/manuals/

Delete 23 unreferenced one-off scripts from scripts/ (keeping 5 active).
Delete stale Dockerfile.e2e, docker-compose.e2e.yml, test/e2e/.
Remove empty third_party/ directory.

Root is now: README, CLAUDE.md, LICENSE, package.json, Makefile,
Dockerfile, docker-compose.yml, docker/, scripts/ (5), nodes/, wiki/,
plus dotfiles (.agents, .claude, .gitea).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:01:04 +02:00

32 lines
1.1 KiB
Markdown

# Node-RED Runtime Node JS Manual (EVOLV Summary)
Based on: https://nodered.org/docs/creating-nodes/node-js
## Input Handler Contract
- Node-RED calls runtime handlers as `function(msg, send, done)`.
- For compatibility, custom nodes should support fallback behavior when `send` is not provided.
- Use `done()` on successful completion and `done(err)` on failure.
## Output Routing Rules
- For single-output nodes: `send(msg)` sends on output 1.
- For multi-output nodes: pass an array with one slot per output, for example:
- `[msg, null, null]` => output 1 only
- `[null, msg, null]` => output 2 only
- Always construct the outbound message first, then send it.
## EVOLV Runtime Pattern
Recommended runtime input structure for `src/nodeClass.js`:
1. Normalize `send` fallback.
2. Wrap `switch(msg.topic)` in `try/catch`.
3. Route response messages to explicit output index with array format.
4. Call `done()`/`done(err)` consistently.
## Common Failure Mode
- Sending a bare object in a multi-output context can hide intended port routing.
- In EVOLV nodes with 3 outputs (`process`, `dbase`, `parent`), use explicit arrays for deterministic wiring behavior.