fix: null-safe kRPC handshake error reporting
CI / Lint, typecheck, test, build (pull_request) Failing after 11s
CI / Lint, typecheck, test, build (pull_request) Failing after 11s
The bridge was falling back to mock mode with a confusing 'Cannot read properties of null (reading code)' error. The actual underlying error (ECONNREFUSED, timeout, protocol mismatch) was being swallowed by our error handler that did `(e as Error).message` on a value that was sometimes null. Wrap the kRPC client connect() in per-step try/catch with a formatErr() helper that handles: - null / undefined - strings - Error with .code (NodeJS.ErrnoException) - arbitrary objects (JSON.stringify fallback) Now when the bridge can't reach kRPC you get a real error like 'kRPC RPC TCP connect to 127.0.0.1:50000 failed: code=ECONNREFUSED: connect ECONNREFUSED 127.0.0.1:50000' instead of the cryptic null-code message. Also fixed the bridge's main() error handler to be null-safe. Discovered while debugging the user's first end-to-end run on Windows: kRPC was reachable (Test-NetConnection succeeded) but the bridge couldn't complete the handshake. With this fix we'll see the real failure mode on the next attempt.
This commit is contained in:
@@ -60,7 +60,8 @@ async function main(): Promise<void> {
|
||||
await adapter.connect();
|
||||
log(`connected to kRPC at ${HOST}:${RPC_PORT} — running with real KSP state`);
|
||||
} catch (e) {
|
||||
log(`no kRPC server at ${HOST}:${RPC_PORT}: ${(e as Error).message}`);
|
||||
const msg = e === null ? 'null' : e instanceof Error ? e.message : String(e);
|
||||
log(`no kRPC server at ${HOST}:${RPC_PORT}: ${msg}`);
|
||||
log('Falling back to MOCK mode (synthetic state).');
|
||||
return runMock();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user