openclaw - ✅(Solved) Fix [Bug]: openclaw config 调节 channel 时报错 [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#62083Fetched 2026-04-08 03:09:16
View on GitHub
Comments
0
Participants
1
Timeline
3
Reactions
0
Author
Participants
Timeline (top)
labeled ×2cross-referenced ×1

更新后 [openclaw] Failed to start CLI: Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:' at throwIfUnsupportedURLScheme (node:internal/modules/esm/load:195:11) at defaultLoadSync (node:internal/modules/esm/load:142:3) at #loadAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:796:12) at #loadSync (node:internal/modules/esm/loader:816:49) at ModuleLoader.load (node:internal/modules/esm/loader:781:26) at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:526:31) at #getOrCreateModuleJobAfterResolve (node:internal/modules/esm/loader:577:36) at afterResolve (node:internal/modules/esm/loader:625:52) at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:631:12) at onImport.tracePromise.proto (node:internal/modules/esm/loader:650:32) at TracingChannel.tracePromise (node:diagnostics_channel:350:14) at ModuleLoader.import (node:internal/modules/esm/loader:646:21) at defaultImportModuleDynamicallyForModule (node:internal/modules/esm/utils:225:31) at importModuleDynamicallyCallback (node:internal/modules/esm/utils:267:12) at Object.nativeImport (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/node_modules/jiti/lib/jiti.mjs:8:37) at jitiRequire (C:\Users\SmallXY\AppData\Local\pnpm\global\5.pnpm\[email protected]_@[email protected]\node_modules\openclaw\node_modules\jiti\dist\jiti.cjs:1:149978) at import (C:\Users\SmallXY\AppData\Local\pnpm\global\5.pnpm\[email protected]_@[email protected]\node_modules\openclaw\node_modules\jiti\dist\jiti.cjs:1:158307) at C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:102:45 at process.processTicksAndRejections (node:internal/process/task_queues:103:5) at async loadSignalChannelRuntime (C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:102:10) at async C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:104:66 at async Object.resolveConfigured (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/setup-wizard-proxy-CnO9z2dq.js:70:46) at async buildStatus (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/onboard-channels-BhDh0eUz.js:150:21)

Error Message

更新后 [openclaw] Failed to start CLI: Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'

Root Cause

更新后 [openclaw] Failed to start CLI: Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:' at throwIfUnsupportedURLScheme (node:internal/modules/esm/load:195:11) at defaultLoadSync (node:internal/modules/esm/load:142:3) at #loadAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:796:12) at #loadSync (node:internal/modules/esm/loader:816:49) at ModuleLoader.load (node:internal/modules/esm/loader:781:26) at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:526:31) at #getOrCreateModuleJobAfterResolve (node:internal/modules/esm/loader:577:36) at afterResolve (node:internal/modules/esm/loader:625:52) at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:631:12) at onImport.tracePromise.proto (node:internal/modules/esm/loader:650:32) at TracingChannel.tracePromise (node:diagnostics_channel:350:14) at ModuleLoader.import (node:internal/modules/esm/loader:646:21) at defaultImportModuleDynamicallyForModule (node:internal/modules/esm/utils:225:31) at importModuleDynamicallyCallback (node:internal/modules/esm/utils:267:12) at Object.nativeImport (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/node_modules/jiti/lib/jiti.mjs:8:37) at jitiRequire (C:\Users\SmallXY\AppData\Local\pnpm\global\5.pnpm\[email protected]_@[email protected]\node_modules\openclaw\node_modules\jiti\dist\jiti.cjs:1:149978) at import (C:\Users\SmallXY\AppData\Local\pnpm\global\5.pnpm\[email protected]_@[email protected]\node_modules\openclaw\node_modules\jiti\dist\jiti.cjs:1:158307) at C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:102:45 at process.processTicksAndRejections (node:internal/process/task_queues:103:5) at async loadSignalChannelRuntime (C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:102:10) at async C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:104:66 at async Object.resolveConfigured (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/setup-wizard-proxy-CnO9z2dq.js:70:46) at async buildStatus (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/onboard-channels-BhDh0eUz.js:150:21)

Fix Action

Fixed

PR fix notes

PR #62194: fix(plugin-sdk): normalize bundled entry imports on Windows

Description (problem / solution / changelog)

Summary

  • Problem: Bundled channel setup/runtime entry loading could hand raw Windows absolute paths like C:\... to Jiti, which triggers ERR_UNSUPPORTED_ESM_URL_SCHEME (Received protocol 'c:') on Windows.
  • Why it matters: This breaks channel-related setup/config flows on Windows, including the reported Signal/channel config path.
  • What changed: Normalize bundled entry module paths to file:// URLs before passing them to Jiti in src/plugin-sdk/channel-entry-contract.ts, and add a focused regression test for the Windows fallback path in src/plugin-sdk/channel-entry-contract.test.ts.
  • What did NOT change (scope boundary): No broader plugin loader refactor, no behavior changes for non-Windows platforms, and no changes to channel/plugin manifests or runtime registration logic.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #62083
  • Related #
  • This PR fixes a bug or regression

Root Cause (if applicable)

  • Root cause: The bundled channel entry contract loader passed resolved Windows absolute paths directly into Jiti. On Windows ESM paths, drive-letter paths must be converted to file:// URLs before import/loading.
  • Missing detection / guardrail: The main plugin loader already normalized Windows import paths, but the bundled channel entry contract path did not have equivalent coverage.
  • Contributing context (if known): The failure surfaced in a setup/config flow that loads bundled channel sidecar entries through src/plugin-sdk/channel-entry-contract.ts.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file: src/plugin-sdk/channel-entry-contract.test.ts
  • Scenario the test should lock in: When the bundled channel entry loader resolves a Windows absolute path and falls back to Jiti, it should pass a file:// URL rather than a raw C:\... path.
  • Why this is the smallest reliable guardrail: It exercises the actual bundled entry loading seam without requiring a full Windows E2E setup.
  • Existing test that already covers this (if any): None.
  • If no new test is added, why not: N/A

User-visible / Behavior Changes

Windows channel setup/config flows that load bundled channel entry sidecars no longer fail with ERR_UNSUPPORTED_ESM_URL_SCHEME from raw drive-letter paths.

Diagram (if applicable)

Before:
[channel setup/config load] -> [resolved C:\...\api.js] -> [Jiti gets raw path] -> [ERR_UNSUPPORTED_ESM_URL_SCHEME]

After:
[channel setup/config load] -> [resolved C:\...\api.js] -> [convert to file:///C:/.../api.js] -> [Jiti load succeeds]

Security Impact (required)

  • New permissions/capabilities? (No)
  • Secrets/tokens handling changed? (No)
  • New/changed network calls? (No)
  • Command/tool execution surface changed? (No)
  • Data access scope changed? (No)
  • If any Yes, explain risk + mitigation:

Repro + Verification

Environment

  • OS: macOS host for development; bug targets Windows path handling
  • Runtime/container: Node 22 / pnpm workspace
  • Model/provider: N/A
  • Integration/channel (if any): Signal / channel config flow
  • Relevant config (redacted): N/A

Steps

  1. Resolve/load a bundled channel setup/runtime sidecar on Windows through src/plugin-sdk/channel-entry-contract.ts.
  2. Hit the Jiti loading path with a Windows absolute path like C:\openclaw\dist\extensions\signal\api.js.
  3. Verify the loader receives a file:// URL instead of the raw absolute path.

Expected

  • Bundled entry loading succeeds without ERR_UNSUPPORTED_ESM_URL_SCHEME.

Actual

  • Before the fix, Jiti could receive a raw Windows path and fail with Received protocol 'c:'.

Evidence

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

  • Verified scenarios:
    • Added and ran a focused regression test for the Windows bundled-entry Jiti fallback path.
    • Confirmed the exact focused test passes:
      • corepack pnpm test src/plugin-sdk/channel-entry-contract.test.ts
  • Edge cases checked:
    • Non-Windows behavior is unchanged because normalization is gated on process.platform === "win32".
    • Existing missing-sidecar error reporting test still passes.
  • What you did not verify:
    • I did not run a full Windows end-to-end channel config flow locally.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? (Yes)
  • Config/env changes? (No)
  • Migration needed? (No)
  • If yes, exact upgrade steps:

Risks and Mitigations

  • Risk: Another Windows import surface outside this bundled entry contract path could still miss the same normalization.
    • Mitigation: This PR scopes the fix to the reported seam and adds regression coverage for that seam specifically.

Changed files

  • src/plugin-sdk/channel-entry-contract.test.ts (modified, +69/-4)
  • src/plugin-sdk/channel-entry-contract.ts (modified, +17/-3)
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

更新后 [openclaw] Failed to start CLI: Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:' at throwIfUnsupportedURLScheme (node:internal/modules/esm/load:195:11) at defaultLoadSync (node:internal/modules/esm/load:142:3) at #loadAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:796:12) at #loadSync (node:internal/modules/esm/loader:816:49) at ModuleLoader.load (node:internal/modules/esm/loader:781:26) at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:526:31) at #getOrCreateModuleJobAfterResolve (node:internal/modules/esm/loader:577:36) at afterResolve (node:internal/modules/esm/loader:625:52) at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:631:12) at onImport.tracePromise.proto (node:internal/modules/esm/loader:650:32) at TracingChannel.tracePromise (node:diagnostics_channel:350:14) at ModuleLoader.import (node:internal/modules/esm/loader:646:21) at defaultImportModuleDynamicallyForModule (node:internal/modules/esm/utils:225:31) at importModuleDynamicallyCallback (node:internal/modules/esm/utils:267:12) at Object.nativeImport (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/node_modules/jiti/lib/jiti.mjs:8:37) at jitiRequire (C:\Users\SmallXY\AppData\Local\pnpm\global\5.pnpm\[email protected]_@[email protected]\node_modules\openclaw\node_modules\jiti\dist\jiti.cjs:1:149978) at import (C:\Users\SmallXY\AppData\Local\pnpm\global\5.pnpm\[email protected]_@[email protected]\node_modules\openclaw\node_modules\jiti\dist\jiti.cjs:1:158307) at C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:102:45 at process.processTicksAndRejections (node:internal/process/task_queues:103:5) at async loadSignalChannelRuntime (C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:102:10) at async C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/extensions/signal/api.js:104:66 at async Object.resolveConfigured (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/setup-wizard-proxy-CnO9z2dq.js:70:46) at async buildStatus (file:///C:/Users/SmallXY/AppData/Local/pnpm/global/5/.pnpm/[email protected]_@[email protected]/node_modules/openclaw/dist/onboard-channels-BhDh0eUz.js:150:21)

Steps to reproduce

从 旧版本升上来出现的

Expected behavior

config 设置

Actual behavior

这啥

OpenClaw version

2026.4.5

Operating system

windows

Install method

pnpm & npm

Model

minimax

Provider / routing chain

minimax

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

The issue is likely due to an unsupported URL scheme in the ESM loader, and using a file:// URL scheme for absolute paths on Windows may resolve the issue.

Guidance

  • Verify that the error occurs when trying to load a module with an absolute path on Windows, and check if the path is correctly formatted as a file:// URL.
  • Check the openclaw version and ensure it is compatible with the current Node.js version, as the error message suggests an issue with the default ESM loader.
  • Try updating the openclaw version to a newer release, if available, to see if the issue is resolved.
  • If using a custom configuration, check the config settings to ensure that the URL scheme is correctly specified.

Example

No code snippet is provided as the issue is related to a specific error message and configuration.

Notes

The issue seems to be related to a regression in the openclaw package, and the error message suggests an issue with the default ESM loader. The solution may involve updating the package or modifying the configuration to use a supported URL scheme.

Recommendation

Apply a workaround by using a file:// URL scheme for absolute paths on Windows, as this may resolve the issue until a newer version of openclaw is released that addresses the regression.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

config 设置

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING