Troubleshooting
Common issues and solutions when using Smippo.
Installation Issues
Browser Download Fails
Symptom: Error during npm install -g smippo related to browser download.
Solutions:
- Retry the installation:
npm uninstall -g smippo
npm install -g smippo
-
Check your network connection and proxy settings.
-
If you're behind a corporate firewall, you may need to configure proxy settings.
Permission Denied
Symptom: EACCES: permission denied during global install.
Solutions:
- Use sudo (not recommended):
sudo npm install -g smippo
- Configure npm to use a local directory (recommended):
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
npm install -g smippo
- Add to your shell profile:
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
Node.js Version
Symptom: Error: smippo requires Node.js 18 or later
Solution: Update Node.js:
# Using nvm
nvm install 18
nvm use 18
# Or download from nodejs.org
Capture Issues
Page Loads But Content Missing
Symptom: HTML captured but dynamic content is missing.
Solutions:
- Increase wait time:
smippo https://example.com --wait-time 5000
- Use network idle wait:
smippo https://example.com --wait networkidle
- For SPAs, wait longer:
smippo https://spa-app.com --wait-time 10000
Timeout Errors
Symptom: Error: Timeout 30000ms exceeded
Solutions:
- Increase timeout:
smippo https://slow-site.com --timeout 60000
- Use a faster wait strategy:
smippo https://example.com --wait domcontentloaded
- Check if the site is actually slow or blocking automated access.
Rate Limiting / 429 Errors
Symptom: Many 429 Too Many Requests errors.
Solutions:
- Reduce workers:
smippo https://example.com --workers 2
- Add rate limiting:
smippo https://example.com --rate-limit 2000
- Combine both:
smippo https://example.com --workers 1 --rate-limit 3000
Authentication Failures
Symptom: Pages return 401 or redirect to login.
Solutions:
- Use cookie-based auth:
smippo https://example.com --cookies cookies.json
- Use interactive auth:
smippo https://example.com --capture-auth
- Check if cookies have expired.
Blocked by Bot Detection
Symptom: Site returns CAPTCHA or blocks access.
Solutions:
- Try a real user agent:
smippo https://example.com --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
- Use interactive auth to solve CAPTCHA:
smippo https://example.com --capture-auth
- Add delays to appear more human:
smippo https://example.com --workers 1 --rate-limit 3000 --wait-time 2000
robots.txt Blocking
Symptom: Pages skipped due to robots.txt.
Solutions:
- Ignore robots.txt (use responsibly):
smippo https://example.com --ignore-robots
- Check what's blocked:
curl https://example.com/robots.txt
Output Issues
Broken Images
Symptom: Images show as broken in offline view.
Solutions:
- Enable external assets:
smippo https://example.com --external-assets
- Check if images were filtered:
# Don't exclude images
smippo https://example.com --mime-include "image/*"
- Verify the file exists:
ls ./site/example.com/images/
Missing Styles
Symptom: Page looks unstyled.
Solutions:
- Capture external CSS:
smippo https://example.com --external-assets
- Check CSS was captured:
find ./site -name "*.css"
- Verify CSS links are rewritten:
grep 'href.*css' ./site/example.com/index.html
JavaScript Errors
Symptom: Console errors when viewing offline.
Solutions:
- For read-only archives, strip JS:
smippo https://example.com --static
- Check JS files were captured:
find ./site -name "*.js"
- Some JS won't work offline (API calls, etc.) - this is expected.
Links Don't Work
Symptom: Clicking links results in 404.
Solutions:
- Use the built-in server:
smippo serve ./site --open
- Check link rewriting:
grep 'href=' ./site/example.com/index.html
- Ensure pages were captured:
cat ./site/.smippo/manifest.json | grep localPath
Performance Issues
Capture Too Slow
Solutions:
- Increase workers:
smippo https://example.com --workers 12
- Use faster wait strategy:
smippo https://example.com --wait domcontentloaded
- Filter out large files:
smippo https://example.com --max-size 5MB --mime-exclude "video/*"
- Disable HAR:
smippo https://example.com --no-har
High Memory Usage
Solutions:
- Reduce workers:
smippo https://example.com --workers 4
- Filter large files:
smippo https://example.com --max-size 2MB
- Disable HAR (can get large):
smippo https://example.com --no-har
Capture Never Finishes
Solutions:
- Set limits:
smippo https://example.com --max-pages 500 --max-time 600
- Narrow scope:
smippo https://example.com --scope subdomain --stay-in-dir
- Check for infinite loops (sites that generate endless pages):
smippo https://example.com --verbose # Watch for patterns
Server Issues
Port Already in Use
Symptom: Server fails to start on port 8080.
Solutions:
Smippo auto-finds available ports. Or specify one:
smippo serve ./site --port 3000
CORS Errors
Symptom: Browser console shows CORS errors.
Solution: CORS is enabled by default. If you disabled it:
smippo serve ./site # CORS enabled by default
Files Not Found
Symptom: Server returns 404 for existing files.
Solutions:
- Check file paths are correct:
ls ./site/example.com/
- Ensure you're serving the right directory:
smippo serve ./site # Not ./site/example.com
Getting Help
Debug Mode
Run with visible browser to see what's happening:
smippo https://example.com --debug
Verbose Logging
Get detailed output:
smippo https://example.com --verbose --log-file capture.log
Check the HAR File
Open ./site/.smippo/network.har in HAR viewer tools to inspect all requests/responses.
Report Issues
If you've tried these solutions and still have issues:
- Run with
--debug --verbose - Note your Node.js version (
node --version) - Note your OS
- Include the error message
- Open an issue on GitHub
Next Steps
- Configuration Options — All available options
- Performance — Optimization tips
- Examples — Working examples