72 lines
2.8 KiB
Bash
72 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# Fix npm and Prisma dependency issues
|
|
# Run this script when connected to the container to resolve installation problems
|
|
|
|
set -e
|
|
|
|
LOG_FILE="/app/logs/npm-fix.log"
|
|
echo "[$(date)] Starting npm fix script" | tee -a $LOG_FILE
|
|
|
|
# Navigate to app directory
|
|
cd /app
|
|
echo "[$(date)] Working in directory: $(pwd)" | tee -a $LOG_FILE
|
|
|
|
# Clean up problematic packages
|
|
echo "[$(date)] Removing problematic packages..." | tee -a $LOG_FILE
|
|
rm -rf node_modules/abbrev 2>/dev/null || true
|
|
rm -rf node_modules/bcrypt 2>/dev/null || true
|
|
rm -rf node_modules/.prisma 2>/dev/null || true
|
|
|
|
# Clean up Prisma nested modules
|
|
echo "[$(date)] Cleaning up Prisma dependencies..." | tee -a $LOG_FILE
|
|
rm -rf node_modules/@prisma/internals/node_modules/@prisma/engines 2>/dev/null || true
|
|
rm -rf node_modules/@prisma/internals/node_modules/@prisma/engines-version 2>/dev/null || true
|
|
rm -rf node_modules/@prisma/client/node_modules/@prisma/engines-version 2>/dev/null || true
|
|
|
|
# Clean npm cache
|
|
echo "[$(date)] Cleaning npm cache..." | tee -a $LOG_FILE
|
|
npm cache clean --force
|
|
|
|
# Fix nested node_modules issues
|
|
echo "[$(date)] Removing nested node_modules..." | tee -a $LOG_FILE
|
|
find node_modules -type d -name "node_modules" -not -path "node_modules" -exec rm -rf {} + 2>/dev/null || true
|
|
|
|
# Install critical packages individually
|
|
echo "[$(date)] Installing critical packages individually..." | tee -a $LOG_FILE
|
|
npm install abbrev@latest --no-save --no-audit --no-fund | tee -a $LOG_FILE
|
|
npm install bcrypt@latest --build-from-source --no-save --no-audit --no-fund | tee -a $LOG_FILE
|
|
|
|
# Install specific Prisma versions
|
|
echo "[$(date)] Installing specific Prisma versions..." | tee -a $LOG_FILE
|
|
npm uninstall prisma @prisma/client --no-save | tee -a $LOG_FILE
|
|
npm install prisma@5.12.0 @prisma/client@5.12.0 --save-exact --no-audit --no-fund | tee -a $LOG_FILE
|
|
|
|
# Reinstall all dependencies with safer options
|
|
echo "[$(date)] Reinstalling all dependencies..." | tee -a $LOG_FILE
|
|
npm install --production --no-optional --legacy-peer-deps | tee -a $LOG_FILE
|
|
|
|
# Generate Prisma client
|
|
echo "[$(date)] Generating Prisma client..." | tee -a $LOG_FILE
|
|
npx prisma generate | tee -a $LOG_FILE
|
|
|
|
# Rebuild Next.js
|
|
echo "[$(date)] Building Next.js application..." | tee -a $LOG_FILE
|
|
npx next build | tee -a $LOG_FILE
|
|
|
|
echo "[$(date)] Fix script completed. Check for any errors above." | tee -a $LOG_FILE
|
|
echo "[$(date)] You may need to restart the application now: npm start" | tee -a $LOG_FILE
|
|
|
|
# Print instructions for running the script in the background
|
|
cat << "EOF"
|
|
|
|
To run this script in the background (detached from terminal):
|
|
nohup /app/_deploy/fix-npm-issues.sh > /app/logs/npm-fix.log 2>&1 &
|
|
|
|
To monitor progress:
|
|
tail -f /app/logs/npm-fix.log
|
|
|
|
To restart the application after fixing:
|
|
pkill -f "npm start" || true
|
|
nohup npm start > /app/logs/app.log 2>&1 &
|
|
|
|
EOF |