fix: robust node.js version parsing in installers

Improved Node.js version check logic to handle prefixed version strings and avoid brittle cut commands. Verified with multiple version formats including v24.11.1.
This commit is contained in:
Trae Agent
2026-01-29 11:26:11 +04:00
Unverified
parent 4cf8412ec9
commit 2ba9dedfb0
4 changed files with 36 additions and 12 deletions

View File

@@ -69,9 +69,11 @@ check_prerequisites() {
check_command "curl" check_command "curl"
# Check Node.js version (need 14+) # Check Node.js version (need 14+)
NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1) local node_full_version=$(node -v 2>&1)
if [ "$NODE_VERSION" -lt 14 ]; then local node_major_version=$(echo "$node_full_version" | grep -oE '[0-9]+' | head -n1)
log_error "Node.js version 14 or higher required. Current: $(node -v)"
if [ -z "$node_major_version" ] || [ "$node_major_version" -lt 14 ]; then
log_error "Node.js version 14 or higher required. Current: $node_full_version"
exit 1 exit 1
fi fi

View File

@@ -108,14 +108,21 @@ check_nodejs() {
exit 1 exit 1
fi fi
local node_version=$(node -v | cut -d'v' -f2 | cut -d'.' -f1) local node_full_version=$(node -v 2>&1)
if [ "$node_version" -lt 18 ]; then local node_version=$(echo "$node_full_version" | grep -oE '[0-9]+' | head -n1)
log_error "Node.js version $node_version is too old!"
echo "Node.js 18 or newer is required." if [ -z "$node_version" ]; then
log_error "Could not parse Node.js version from: $node_full_version"
exit 1 exit 1
fi fi
log_success "Node.js $(node -v) found" if [ "$node_version" -lt 18 ]; then
log_error "Node.js version $node_version is too old!"
echo "Node.js 18 or newer is required. Found: $node_full_version"
exit 1
fi
log_success "Node.js $node_full_version found"
} }
check_claude_code_installed() { check_claude_code_installed() {

View File

@@ -179,10 +179,18 @@ function Install-Dependencies {
# Check Node.js # Check Node.js
$nodeCmd = Get-Command node -ErrorAction SilentlyContinue $nodeCmd = Get-Command node -ErrorAction SilentlyContinue
if ($nodeCmd) { if ($nodeCmd) {
$version = & node --version $nodeFullVersion = & node --version
Write-ColorOutput "Node.js found: $version" -Type Success $nodeMajorVersion = ($nodeFullVersion -replace '^v', '') -split '\.' | Select-Object -First 1
if ([int]$nodeMajorVersion -lt 18) {
Write-ColorOutput "Node.js version $nodeMajorVersion is too old! Node.js 18 or newer is required." -Type Error
exit 1
}
Write-ColorOutput "Node.js found: $nodeFullVersion" -Type Success
} else { } else {
Write-ColorOutput "Node.js not found. Some features may not work." -Type Warning Write-ColorOutput "Node.js not found. Node.js 18 or newer is required to install Claude Code." -Type Error
exit 1
} }
# Check Git # Check Git

View File

@@ -178,7 +178,14 @@ install_dependencies() {
if ! command -v node &> /dev/null; then if ! command -v node &> /dev/null; then
log_warn "Node.js not found. Some features may not work." log_warn "Node.js not found. Some features may not work."
else else
log_success "Node.js found: $(node --version)" local node_full_version=$(node -v 2>&1)
local node_version=$(echo "$node_full_version" | grep -oE '[0-9]+' | head -n1)
if [ ! -z "$node_version" ] && [ "$node_version" -ge 18 ]; then
log_success "Node.js found: $node_full_version"
else
log_warn "Node.js found but too old ($node_full_version). v18+ recommended."
fi
fi fi
# Check Git # Check Git