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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user