diff --git a/workbench/bin/start-workbench.ps1 b/workbench/bin/start-workbench.ps1 index 7243482..91c7465 100644 --- a/workbench/bin/start-workbench.ps1 +++ b/workbench/bin/start-workbench.ps1 @@ -19,14 +19,15 @@ param( $ErrorActionPreference = 'Stop' $RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot '..\..')).Path $WorkbenchDir = Join-Path $RepoRoot 'workbench' -$PluginDir = Join-Path $WorkbenchDir 'plugin' $LocalYml = Join-Path $WorkbenchDir 'cordis.local.yml' # 1) 渲染 cordis.local.yml $template = Get-Content (Join-Path $WorkbenchDir 'cordis.template.yml') -Raw -Encoding UTF8 -$pluginDirPosix = ($PluginDir -replace '\\', '/') +$workbenchDirPosix = ($WorkbenchDir -replace '\\', '/') $projectRootPosix = ($RepoRoot -replace '\\', '/') -$rendered = $template.Replace('__PLUGIN_DIR__', $pluginDirPosix).Replace('__PROJECT_ROOT__', $projectRootPosix) +# Windows 上 dsh 的 ESM 加载器要求 file:// URL +$workbenchModuleUrl = 'file:///' + $workbenchDirPosix +$rendered = $template.Replace('__WORKBENCH_DIR__', $workbenchModuleUrl).Replace('__PROJECT_ROOT__', $projectRootPosix) $rendered = $rendered -replace 'bridgePort: 8790', "bridgePort: $BridgePort" $rendered = $rendered -replace "consoleBaseUrl: 'http://127.0.0.1:8765'", "consoleBaseUrl: 'http://127.0.0.1:$ConsolePort'" [System.IO.File]::WriteAllText($LocalYml, $rendered, (New-Object System.Text.UTF8Encoding($false))) diff --git a/workbench/bin/start-workbench.sh b/workbench/bin/start-workbench.sh index be12316..d56b13a 100644 --- a/workbench/bin/start-workbench.sh +++ b/workbench/bin/start-workbench.sh @@ -11,8 +11,9 @@ CONSOLE_PORT="${GYXX_CONSOLE_PORT:-8765}" BRIDGE_PORT="${GYXX_WB_BRIDGE_PORT:-8790}" # 1) 渲染 cordis.local.yml(插件路径必须为绝对路径) +# dsh 的 ESM 加载器要求 file:// URL(Windows 上必须,POSIX 上同样可用) sed \ - -e "s|__PLUGIN_DIR__|$WORKBENCH_DIR/plugin|g" \ + -e "s|__WORKBENCH_DIR__|file://$WORKBENCH_DIR|g" \ -e "s|__PROJECT_ROOT__|$REPO_ROOT|g" \ -e "s|bridgePort: 8790|bridgePort: $BRIDGE_PORT|g" \ -e "s|http://127.0.0.1:8765|http://127.0.0.1:$CONSOLE_PORT|g" \ diff --git a/workbench/cordis.template.yml b/workbench/cordis.template.yml index f8bb4ea..8d922b8 100644 --- a/workbench/cordis.template.yml +++ b/workbench/cordis.template.yml @@ -1,11 +1,11 @@ # GYXX 智能工作台 —— dsh Web 组合补丁(模板)。 -# 启动脚本会把 __PLUGIN_DIR__ / __PROJECT_ROOT__ 渲染为绝对路径后生成 +# 启动脚本会把 __WORKBENCH_DIR__ / __PROJECT_ROOT__ 渲染为绝对路径后生成 # cordis.local.yml,再通过 `dsh web --patch workbench/cordis.local.yml` 加载。 -# 不要直接手工使用本文件:dsh 要求插件路径为绝对路径。 +# 不要直接手工使用本文件:dsh 要求插件路径为绝对路径(Windows 上必须是 file:// URL)。 - insert: - id: gyxx-workbench - name: '__PLUGIN_DIR__/plugin/gyxx-workbench.mjs' + name: '__WORKBENCH_DIR__/plugin/gyxx-workbench.mjs' config: # gyxx 控制台 HTTP API(gyxx console,默认 8765 端口) consoleBaseUrl: 'http://127.0.0.1:8765'