409 lines
9.4 KiB
Markdown
409 lines
9.4 KiB
Markdown
# 🔧 Troubleshooting Guide
|
|
|
|
## Installation Issues
|
|
|
|
### Node.js Not Found
|
|
|
|
**Problem:** `command not found: node` or `'node' is not recognized`
|
|
|
|
**Solution:**
|
|
1. Install Node.js from https://nodejs.org/ (LTS version recommended)
|
|
2. Restart your terminal after installation
|
|
3. Verify: `node --version` should show v18.0.0 or higher
|
|
|
|
### npm Install Fails
|
|
|
|
**Problem:** Errors during `npm install`
|
|
|
|
**Solutions:**
|
|
- Clear npm cache: `npm cache clean --force`
|
|
- Delete `node_modules` folders and try again
|
|
- Update npm: `npm install -g npm@latest`
|
|
- Check your internet connection
|
|
- Try: `npm install --legacy-peer-deps`
|
|
|
|
## Server Issues
|
|
|
|
### Port Already in Use
|
|
|
|
**Problem:** `Error: listen EADDRINUSE: address already in use :::3001`
|
|
|
|
**Solution 1 - Change Ports:**
|
|
1. Edit `server/server.js`:
|
|
```javascript
|
|
const PORT = 3005; // Change from 3001
|
|
const WS_PORT = 3006; // Change from 3002
|
|
```
|
|
|
|
2. Edit `client/src/store/turtleStore.js`:
|
|
```javascript
|
|
const WS_URL = 'ws://localhost:3006';
|
|
const API_URL = 'http://localhost:3005';
|
|
```
|
|
|
|
**Solution 2 - Kill Existing Process:**
|
|
|
|
Linux/Mac:
|
|
```bash
|
|
lsof -ti:3001 | xargs kill -9
|
|
lsof -ti:3002 | xargs kill -9
|
|
```
|
|
|
|
Windows:
|
|
```cmd
|
|
netstat -ano | findstr :3001
|
|
taskkill /PID <PID_NUMBER> /F
|
|
```
|
|
|
|
### Server Won't Start
|
|
|
|
**Problem:** Server crashes on start
|
|
|
|
**Checklist:**
|
|
- [ ] Dependencies installed? Run `cd server && npm install`
|
|
- [ ] Node.js version 18+? Check with `node --version`
|
|
- [ ] Firewall blocking ports? Add exception for ports 3001-3002
|
|
- [ ] Check server logs for specific error messages
|
|
|
|
## Client Issues
|
|
|
|
### White Screen / Nothing Renders
|
|
|
|
**Problem:** Browser shows blank page
|
|
|
|
**Solutions:**
|
|
1. Open browser console (F12) and check for errors
|
|
2. Verify server is running: http://localhost:3001/api/turtles
|
|
3. Clear browser cache (Ctrl+Shift+Delete)
|
|
4. Try incognito/private mode
|
|
5. Try different browser (Chrome/Firefox recommended)
|
|
|
|
### WebSocket Connection Failed
|
|
|
|
**Problem:** Red "Disconnected" status in top-right
|
|
|
|
**Solutions:**
|
|
1. Check server console for errors
|
|
2. Verify WebSocket port (3002) is open
|
|
3. Check browser console for WebSocket errors
|
|
4. Ensure server URL is correct in `turtleStore.js`
|
|
5. Firewall may be blocking WebSocket - add exception
|
|
|
|
### 3D Map Not Showing
|
|
|
|
**Problem:** Map area is black or shows errors
|
|
|
|
**Solutions:**
|
|
- WebGL not supported: Update graphics drivers
|
|
- Browser compatibility: Use Chrome 90+ or Firefox 88+
|
|
- Hardware acceleration disabled: Enable in browser settings
|
|
- Chrome: Settings → System → Use hardware acceleration
|
|
- Firefox: Settings → Performance → Use hardware acceleration
|
|
- GPU issues: Try different browser
|
|
|
|
## Minecraft/ComputerCraft Issues
|
|
|
|
### Bridge Computer Not Connecting
|
|
|
|
**Problem:** `webbridge.lua` runs but no connection to server
|
|
|
|
**Checklist:**
|
|
1. Verify SERVER_URL is correct:
|
|
```lua
|
|
local SERVER_URL = "http://localhost:3001"
|
|
```
|
|
- Use computer's IP if server is remote
|
|
- Don't use `https://` (use `http://`)
|
|
|
|
2. Check HTTP API is enabled:
|
|
- Edit `config/computercraft-server.toml` or `.minecraft/config/computercraft.cfg`
|
|
- Find: `enable_http = true`
|
|
- Ensure your server URL is not in `blocked_domains`
|
|
|
|
3. Test HTTP manually:
|
|
```lua
|
|
local response = http.get("http://localhost:3001/api/turtles")
|
|
print(response ~= nil) -- Should print true
|
|
```
|
|
|
|
### Turtles Not Appearing in Web
|
|
|
|
**Problem:** Bridge runs, but no turtles show up
|
|
|
|
**Diagnosis:**
|
|
1. Check bridge computer console for "Status from Turtle X" messages
|
|
2. Check server console for "Status update from Turtle X" messages
|
|
3. Check web browser console for WebSocket messages
|
|
|
|
**Common Causes:**
|
|
- Channel mismatch - Verify all scripts use same channels:
|
|
- `turtle.lua`: STATUS_CHANNEL = 102
|
|
- `webbridge.lua`: STATUS_CHANNEL = 102
|
|
|
|
- Modem not equipped on turtle
|
|
- Turtles out of wireless range
|
|
- Turtles not running `turtle.lua` script
|
|
|
|
### GPS Not Working
|
|
|
|
**Problem:** Turtles show "No GPS"
|
|
|
|
**Solution - Set Up GPS Hosts:**
|
|
|
|
1. Place 4 computers at high altitude (Y=200+)
|
|
2. Arrange in square pattern (20+ blocks apart)
|
|
3. Give each a wireless modem
|
|
4. Run on each:
|
|
```lua
|
|
gps host X Y Z
|
|
```
|
|
Replace X Y Z with that computer's actual coordinates
|
|
|
|
5. Test from turtle:
|
|
```lua
|
|
x, y, z = gps.locate(5)
|
|
print(x, y, z) -- Should print coordinates
|
|
```
|
|
|
|
### Modem Not Found
|
|
|
|
**Problem:** `No wireless modem found!`
|
|
|
|
**Solutions:**
|
|
- Craft wireless modem (Stone + Ender Pearl)
|
|
- Equip to turtle: Right-click turtle with modem
|
|
- For computer: Place modem adjacent and right-click
|
|
- Verify: `peripheral.find("modem")` should not be nil
|
|
|
|
### Commands Not Reaching Turtles
|
|
|
|
**Problem:** Click commands in web but turtle doesn't respond
|
|
|
|
**Debug Steps:**
|
|
|
|
1. Check server receives command:
|
|
- Server console should show: `Command queued for turtle X`
|
|
|
|
2. Check bridge polls for commands:
|
|
- Bridge console should show: `Command for Turtle X: <command>`
|
|
|
|
3. Check turtle receives command:
|
|
- Add debug to `turtle.lua`:
|
|
```lua
|
|
print("Received message:", textutils.serialize(message))
|
|
```
|
|
|
|
4. Verify channels match:
|
|
- Web → Server → Bridge → Modem Channel 100 → Turtle
|
|
|
|
## Performance Issues
|
|
|
|
### Laggy 3D Map
|
|
|
|
**Solutions:**
|
|
- Reduce number of visible turtles
|
|
- Lower browser zoom level
|
|
- Close other browser tabs
|
|
- Update graphics drivers
|
|
- Try lower graphics settings in browser
|
|
|
|
### Server Using Too Much Memory
|
|
|
|
**Solutions:**
|
|
- Restart server periodically
|
|
- Reduce `statusUpdateInterval` in turtle.lua (less frequent updates)
|
|
- Clear old turtle data: restart server
|
|
|
|
### High Network Usage
|
|
|
|
**Solutions:**
|
|
- Increase `statusUpdateInterval` in turtle.lua (default: 5 seconds)
|
|
- Reduce number of active turtles
|
|
- Use local server instead of remote
|
|
|
|
## Browser-Specific Issues
|
|
|
|
### Chrome
|
|
|
|
**WebSocket closes immediately:**
|
|
- Disable browser extensions (especially ad blockers)
|
|
- Clear site data: F12 → Application → Clear storage
|
|
|
|
### Firefox
|
|
|
|
**3D map performance poor:**
|
|
- Enable WebRender: about:config → gfx.webrender.all → true
|
|
|
|
### Safari
|
|
|
|
**Not recommended** - Limited WebGL support. Use Chrome or Firefox.
|
|
|
|
## Network Issues
|
|
|
|
### Can't Access from Other Devices
|
|
|
|
**Problem:** Works on localhost but not from other computers
|
|
|
|
**Solution:**
|
|
|
|
1. Get your computer's IP address:
|
|
```bash
|
|
# Linux/Mac
|
|
ifconfig | grep "inet "
|
|
|
|
# Windows
|
|
ipconfig
|
|
```
|
|
Example: 192.168.1.100
|
|
|
|
2. Update configs to use IP instead of localhost:
|
|
|
|
**webbridge.lua:**
|
|
```lua
|
|
local SERVER_URL = "http://192.168.1.100:3001"
|
|
```
|
|
|
|
**client/src/store/turtleStore.js:**
|
|
```javascript
|
|
const WS_URL = 'ws://192.168.1.100:3002';
|
|
const API_URL = 'http://192.168.1.100:3001';
|
|
```
|
|
|
|
3. Configure firewall:
|
|
|
|
**Linux:**
|
|
```bash
|
|
sudo ufw allow 3000:3002/tcp
|
|
```
|
|
|
|
**Windows:**
|
|
- Windows Defender Firewall → Advanced Settings
|
|
- Inbound Rules → New Rule
|
|
- Port: 3000-3002
|
|
- Allow the connection
|
|
|
|
4. Access from other device: `http://192.168.1.100:3000`
|
|
|
|
### Minecraft Server and Web Server on Different Machines
|
|
|
|
**Setup:**
|
|
- Computer A: Minecraft + Bridge
|
|
- Computer B: Node.js Server + Web Client
|
|
|
|
**Configuration:**
|
|
|
|
1. On Computer A (Minecraft), edit `webbridge.lua`:
|
|
```lua
|
|
local SERVER_URL = "http://<Computer_B_IP>:3001"
|
|
```
|
|
|
|
2. On Computer B, server.js needs no changes
|
|
|
|
3. Access web interface from anywhere: `http://<Computer_B_IP>:3000`
|
|
|
|
## Common Error Messages
|
|
|
|
### "Failed to send to server"
|
|
|
|
**In webbridge.lua console**
|
|
|
|
**Cause:** Bridge can't reach Node.js server
|
|
|
|
**Fix:**
|
|
- Verify server is running
|
|
- Check SERVER_URL is correct
|
|
- Test: `http.get(SERVER_URL .. "/api/turtles")`
|
|
|
|
### "Turtle not found"
|
|
|
|
**In server logs**
|
|
|
|
**Cause:** Turtle ID not in server's turtle map
|
|
|
|
**Fix:**
|
|
- Turtle hasn't sent status update yet - wait 5 seconds
|
|
- Restart turtle script
|
|
- Check turtle is broadcasting on correct channel
|
|
|
|
### "WebSocket connection failed"
|
|
|
|
**In browser console**
|
|
|
|
**Cause:** Can't connect to WebSocket server
|
|
|
|
**Fix:**
|
|
- Verify server is running
|
|
- Check port 3002 is open
|
|
- Update WS_URL in turtleStore.js
|
|
- Disable VPN/proxy
|
|
|
|
## Still Having Issues?
|
|
|
|
### Collect Debug Information
|
|
|
|
1. **Server logs**: Copy output from server terminal
|
|
2. **Browser console**: F12 → Console tab → Copy errors
|
|
3. **Minecraft logs**: Check bridge computer output
|
|
4. **Network test**: Can you access http://localhost:3001/api/turtles?
|
|
|
|
### Reset Everything
|
|
|
|
Sometimes easiest to start fresh:
|
|
|
|
```bash
|
|
# Stop all servers (Ctrl+C)
|
|
|
|
# Clean and reinstall
|
|
rm -rf server/node_modules client/node_modules
|
|
cd server && npm install
|
|
cd ../client && npm install
|
|
|
|
# Restart
|
|
./start.sh # or start.bat on Windows
|
|
```
|
|
|
|
### Check Versions
|
|
|
|
```bash
|
|
node --version # Should be v18.0.0+
|
|
npm --version # Should be v9.0.0+
|
|
```
|
|
|
|
### Test Connectivity
|
|
|
|
**Test 1 - Server Health:**
|
|
```bash
|
|
curl http://localhost:3001/api/turtles
|
|
```
|
|
Should return: `{"turtles":[]}`
|
|
|
|
**Test 2 - WebSocket:**
|
|
Open browser console and run:
|
|
```javascript
|
|
const ws = new WebSocket('ws://localhost:3002');
|
|
ws.onopen = () => console.log('Connected!');
|
|
ws.onerror = (e) => console.log('Error:', e);
|
|
```
|
|
|
|
**Test 3 - Minecraft HTTP:**
|
|
In ComputerCraft:
|
|
```lua
|
|
local r = http.get("http://localhost:3001/api/turtles")
|
|
print(r ~= nil)
|
|
```
|
|
|
|
---
|
|
|
|
**If all else fails:**
|
|
- Check the full README.md
|
|
- Review ARCHITECTURE.md for system design
|
|
- Ensure all dependencies are installed
|
|
- Try example commands manually
|
|
- Double-check all configuration files match
|
|
|
|
**Still stuck?** Create an issue with:
|
|
- Error messages
|
|
- Server/client logs
|
|
- Steps to reproduce
|
|
- Your configuration
|