fix: 修复 PowerShell 函数输出流污染导致返回值被忽略
外部命令(winget/fnm/npm)的 stdout 输出进入函数输出流, 导致 return $false 实际返回数组, if (-not (Func)) 判断失效, 脚本在 fnm 不可用时仍继续执行 Install-NodeWithFnm 导致报错。 所有外部命令调用加 | Out-Host 将输出重定向到控制台。
This commit is contained in:
18
setup.ps1
18
setup.ps1
@@ -107,12 +107,12 @@ function Install-Fnm {
|
||||
# 使用 winget 安装 fnm
|
||||
if (Test-Command "winget") {
|
||||
Write-Info "使用 winget 安装 fnm..."
|
||||
& winget install Schniz.fnm -e --accept-source-agreements --accept-package-agreements
|
||||
& winget install Schniz.fnm -e --accept-source-agreements --accept-package-agreements | Out-Host
|
||||
}
|
||||
else {
|
||||
# 备选:使用 cargo 或手动下载
|
||||
Write-Info "使用 PowerShell 脚本安装 fnm..."
|
||||
Invoke-Expression "& { $(Invoke-RestMethod https://fnm.vercel.app/install.ps1) }"
|
||||
Invoke-Expression "& { $(Invoke-RestMethod https://fnm.vercel.app/install.ps1) }" | Out-Host
|
||||
}
|
||||
|
||||
Refresh-Path
|
||||
@@ -123,7 +123,7 @@ function Install-Fnm {
|
||||
# 初始化 fnm
|
||||
$fnmEnv = & fnm env --use-on-cd 2>$null
|
||||
if ($fnmEnv) {
|
||||
$fnmEnv | Out-String | Invoke-Expression
|
||||
$fnmEnv | Out-String | Invoke-Expression | Out-Null
|
||||
}
|
||||
return $true
|
||||
}
|
||||
@@ -144,9 +144,9 @@ function Install-NodeWithFnm {
|
||||
Write-Info "使用 fnm 安装 Node.js 24.x..."
|
||||
|
||||
try {
|
||||
& fnm install 24
|
||||
& fnm use 24
|
||||
& fnm default 24
|
||||
& fnm install 24 | Out-Host
|
||||
& fnm use 24 | Out-Host
|
||||
& fnm default 24 | Out-Host
|
||||
Refresh-Path
|
||||
|
||||
if (Test-Command "node") {
|
||||
@@ -226,7 +226,7 @@ function Install-Tool {
|
||||
Write-Host " 执行: $installCmd" -ForegroundColor Gray
|
||||
|
||||
try {
|
||||
Invoke-Expression $installCmd
|
||||
Invoke-Expression $installCmd | Out-Host
|
||||
$exitCode = $LASTEXITCODE
|
||||
Refresh-Path
|
||||
|
||||
@@ -272,10 +272,10 @@ function Invoke-RemoteSetup {
|
||||
# 执行脚本,正确传递参数
|
||||
$LASTEXITCODE = 0
|
||||
if ($ApiKey) {
|
||||
& $tempFile -ApiKey $ApiKey
|
||||
& $tempFile -ApiKey $ApiKey | Out-Host
|
||||
}
|
||||
else {
|
||||
& $tempFile
|
||||
& $tempFile | Out-Host
|
||||
}
|
||||
|
||||
$scriptSucceeded = $?
|
||||
|
||||
Reference in New Issue
Block a user