Commit 2c0ac64
authored
Fix Node creation crash when using plain object as options (#1424)
When a plain object (e.g., `{ enableRosout: false }`) is passed as options instead of a `NodeOptions` instance, `options.parameterOverrides` is `undefined`, causing `TypeError: Cannot read properties of undefined (reading 'length')`.
Added `Node._normalizeOptions()` to merge plain objects with `NodeOptions.defaultOptions` defaults using nullish coalescing (`??`), ensuring all documented defaults are preserved for unspecified fields while respecting explicitly set values (including `false`).
**Files:**
- `lib/node.js` — added `static _normalizeOptions()`, called at the top of `_init()`
- `test/test-node.js` — added tests for node creation with plain object options and empty object options
Fix: #14231 parent 574cc35 commit 2c0ac64
2 files changed
Lines changed: 42 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
100 | 121 | | |
| 122 | + | |
| 123 | + | |
101 | 124 | | |
102 | 125 | | |
103 | 126 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
146 | 165 | | |
147 | 166 | | |
148 | 167 | | |
| |||
0 commit comments