修复桌面壳开发端口对齐
桌面壳 dev 命令显式锁定 Vite 3000 端口 dev 端口解析支持严格端口模式并避免显式端口被 Linux 端口段改写 补充端口错配回归测试和宿主壳文档记忆
This commit is contained in:
@@ -479,6 +479,7 @@ export async function findAvailablePort({
|
||||
reservedPorts = new Set(),
|
||||
maxAttempts = null,
|
||||
portRange = null,
|
||||
strict = false,
|
||||
}) {
|
||||
const range = normalizePortRange(portRange);
|
||||
const startPort = normalizePort(preferredPort, 0);
|
||||
@@ -501,6 +502,18 @@ export async function findAvailablePort({
|
||||
throw new Error(`端口 ${startPort} 不在允许端口段 ${range.label} 内`);
|
||||
}
|
||||
|
||||
if (strict && startPort !== 0) {
|
||||
if (reservedPorts.has(startPort)) {
|
||||
throw new Error(`端口 ${host}:${startPort} 已被当前 dev 启动流程占用,无法严格使用该端口`);
|
||||
}
|
||||
|
||||
if (await isPortAvailable({host, port: startPort})) {
|
||||
return startPort;
|
||||
}
|
||||
|
||||
throw new Error(`端口 ${host}:${startPort} 不可用,无法严格使用该端口`);
|
||||
}
|
||||
|
||||
const boundedAttempts = range
|
||||
? Number.isFinite(maxAttempts)
|
||||
? Math.min(Math.max(0, maxAttempts), range.end - startPort)
|
||||
@@ -565,6 +578,7 @@ export async function resolveDevStackPorts(config) {
|
||||
preferredPort: portConfig.preferredPort,
|
||||
reservedPorts,
|
||||
portRange: portConfig.portRange,
|
||||
strict: Boolean(portConfig.strict),
|
||||
});
|
||||
reservedPorts.add(resolvedPort);
|
||||
result[name] = resolvedPort;
|
||||
|
||||
Reference in New Issue
Block a user