Files
2026-04-11 00:04:09 -05:00

295 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Troubleshooting Guide - 404 Errors & Installation Issues
## 🔴 Issue 1: pip install requirements.txt fails
### Error Message:
```
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
```
### Solution:
This error usually happens with **Pillow** on Windows systems that don't have build tools installed.
#### Option 1: Install Pre-built Pillow (Recommended)
```bash
# Upgrade pip first
python -m pip install --upgrade pip
# Install Pillow from pre-built wheels
pip install --upgrade Pillow
# Then install other requirements
pip install Flask>=3.0.0
pip install Werkzeug>=3.0.0
```
#### Option 2: Install from updated requirements.txt
The requirements.txt has been updated to use version ranges instead of exact versions:
```bash
pip install -r requirements.txt
```
#### Option 3: Skip Pillow (if you don't need image generation)
If you don't need the dynamic image generation feature, you can install without Pillow:
```bash
pip install Flask>=3.0.0
pip install Werkzeug>=3.0.0
```
The app will still work - it will just disable the image generation features.
---
## 🔴 Issue 2: Login Page Returns 404 Error
### Common Causes & Solutions:
### Cause 1: Flask Server Not Running
**Check if the server is running:**
```bash
# Navigate to app folder
cd "C:\Users\Work\Desktop\CGW Product Finder\app"
# Run the Flask app
python app.py
```
You should see:
```
✓ Image generation available
* Running on http://127.0.0.1:8080
```
**Then access:** http://localhost:8080/login
---
### Cause 2: Wrong URL or Port
**Common mistakes:**
`http://localhost/login` - Missing port number
`http://localhost:8080/login` - Correct
`http://localhost:5000/login` - Wrong port
`http://localhost:8080/login` - Correct (app uses port 8080)
`/login` in browser address bar
`http://localhost:8080/login` - Need full URL
---
### Cause 3: Flask App Import Error
**Test if routes are registered:**
```bash
cd app
python test_routes.py
```
This will show:
- If Flask imports successfully
- All registered routes including /login
- What went wrong if there's an error
**Expected output:**
```
✓ Flask app imported successfully
📝 Login & Authentication Routes:
/login [GET] -> login_page
/api/login [POST] -> login
/api/logout [POST] -> logout
```
---
### Cause 4: Web Server Configuration (Apache/Passenger/IIS)
If you're running through a web server instead of `python app.py`:
**Check your server configuration:**
For **Apache + Passenger:**
- Verify passenger_wsgi.py is being used
- Check if Python path is correct in config
- Ensure the app folder is set as DocumentRoot
For **IIS:**
- Verify web.config is correct
- Check if Python handler is configured
- Ensure proper app folder path
**Test directly first:**
Always test with `python app.py` first to verify the app works before troubleshooting web server issues.
---
## 📋 Step-by-Step Troubleshooting
### Step 1: Verify Installation
```bash
# Check Python version (need 3.7+)
python --version
# Check if Flask is installed
python -c "import flask; print(flask.__version__)"
# Check if Werkzeug is installed
python -c "import werkzeug; print(werkzeug.__version__)"
```
### Step 2: Fresh Install
```bash
cd "C:\Users\Work\Desktop\CGW Product Finder\app"
# Upgrade pip
python -m pip install --upgrade pip
# Install requirements
pip install -r requirements.txt
# Or manual install
pip install Flask>=3.0.0 Werkzeug>=3.0.0 Pillow>=10.0.0
```
### Step 3: Test Routes
```bash
cd app
python test_routes.py
```
Expected: List of routes including /login
### Step 4: Start Server
```bash
python app.py
```
Expected output:
```
✓ Image generation available
* Running on http://127.0.0.1:8080
* Running on http://192.168.x.x:8080
```
### Step 5: Access in Browser
Open browser: http://localhost:8080/login
Expected: Login page with username/password fields
---
## 🐛 Common Errors & Fixes
### Error: "ModuleNotFoundError: No module named 'flask'"
```bash
pip install Flask>=3.0.0
```
### Error: "ModuleNotFoundError: No module named 'werkzeug'"
```bash
pip install Werkzeug>=3.0.0
```
### Error: "Address already in use" / "Port 8080 is already in use"
```bash
# Find what's using port 8080
netstat -ano | findstr :8080
# Kill the process (replace PID with actual process ID)
taskkill /PID <PID> /F
# Or edit app.py to use different port (line 911):
app.run(debug=True, host='0.0.0.0', port=8090)
```
### Error: "Template Not Found: login.html"
```bash
# Verify template exists
dir templates\login.html
# If missing, the file needs to be uploaded to the server
```
### Error: "Working outside of application context"
This means Flask app isn't initialized properly. Run `python test_routes.py` to diagnose.
---
## ✅ Verification Checklist
After fixing issues, verify:
- [ ] Flask server starts without errors: `python app.py`
- [ ] http://localhost:8080/ redirects to http://localhost:8080/login ✓
- [ ] http://localhost:8080/login shows login page ✓
- [ ] Can login with username: `Master` password: `Master`
- [ ] After login, see location selection page ✓
- [ ] Can access user management (Master user only) ✓
- [ ] Logout works and returns to login page ✓
---
## 🚀 Production Deployment
For production servers (not localhost):
1. **Use proper WSGI server** (not `python app.py`)
- Passenger (Apache/Nginx)
- uWSGI
- Gunicorn (Linux)
2. **Set secure SECRET_KEY** in config.py
```python
# Don't use secrets.token_hex() in production
SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secure-random-key-here'
```
3. **Enable HTTPS** and update config:
```python
SESSION_COOKIE_SECURE = True # Only send cookies over HTTPS
```
4. **Set Debug=False** for production
---
## 📞 Still Having Issues?
1. Run the test script:
```bash
python test_routes.py
```
2. Check Flask server output for errors:
```bash
python app.py
```
Look for red error messages
3. Test with curl:
```bash
curl http://localhost:8080/login
```
Should return HTML, not 404
4. Check browser console for JavaScript errors (F12)
5. Verify file permissions (server can read templates/)
---
## 📁 Files Needed for Login System
Ensure these files exist and are uploaded:
- ✅ app/app.py
- ✅ app/templates/login.html
- ✅ app/templates/user_manager.html
- ✅ app/templates/access_denied.html
- ✅ app/templates/select_location.html
- ✅ app/templates/index2.html
- ✅ app/css/styles.css
- ✅ app/data/users.json
Missing any of these will cause 404 or errors.