#!/bin/bash # Script to fix npm installation issues in a running container # Run this script inside the container if you encounter npm package problems set -e echo "=====================================================" echo "Running npm dependency fix script" echo "=====================================================" # Navigate to app directory cd /app # Create logs directory if it doesn't exist mkdir -p /app/logs LOG_FILE="/app/logs/npm-fix.log" echo "Starting npm fix at $(date)" > "$LOG_FILE" # Check for Node.js version NODE_VERSION=$(node -v) echo "Node.js version: $NODE_VERSION" | tee -a "$LOG_FILE" # Clean up node_modules echo "Cleaning up node_modules..." | tee -a "$LOG_FILE" # Remove specific problematic packages echo "Removing problematic packages..." | tee -a "$LOG_FILE" rm -rf node_modules/abbrev rm -rf node_modules/bcrypt rm -rf node_modules/node-pre-gyp rm -rf node_modules/.bin/node-pre-gyp # Clean npm cache echo "Cleaning npm cache..." | tee -a "$LOG_FILE" npm cache clean --force # Install specific problematic packages individually echo "Installing problematic packages individually..." | tee -a "$LOG_FILE" echo "Installing abbrev..." | tee -a "$LOG_FILE" npm install abbrev@latest --no-save --no-audit --no-fund || echo "Failed to install abbrev" | tee -a "$LOG_FILE" echo "Installing bcrypt..." | tee -a "$LOG_FILE" npm install bcrypt@latest --build-from-source --no-save --no-audit --no-fund || echo "Failed to install bcrypt" | tee -a "$LOG_FILE" # Try reinstalling all dependencies echo "Reinstalling all dependencies..." | tee -a "$LOG_FILE" npm install --production --no-optional --legacy-peer-deps || npm install --production --no-optional --force || npm install --production --no-optional --no-package-lock || echo "WARNING: All npm install attempts failed" | tee -a "$LOG_FILE" # Generate Prisma client echo "Generating Prisma client..." | tee -a "$LOG_FILE" npx prisma generate || echo "Failed to generate Prisma client" | tee -a "$LOG_FILE" # Build Next.js application echo "Building Next.js application..." | tee -a "$LOG_FILE" npx next build || echo "Failed to build Next.js application" | tee -a "$LOG_FILE" echo "=====================================================" echo "Fix script completed at $(date)" | tee -a "$LOG_FILE" echo "Check $LOG_FILE for detailed output" echo "=====================================================" echo "To restart the application, run:" echo "1. Find the process ID: ps aux | grep 'npm start'" echo "2. Kill the process: kill " echo "3. Restart: npm start" echo "Or use: pkill -f 'npm start' && npm start" echo "====================================================="