What Causes This Error?
These errors occur when there’s a mismatch between the expected and actual state of the Nuxt development server:
- “Cannot restart”: Trying to restart when no server is running
- “Cannot start”: Trying to start when server is already running
Common Scenarios
Orphaned Process
A previous Nuxt process didn’t shut down properly:
# Find running Nuxt processes
ps aux | grep nuxt
# Or find process using port 3000
lsof -i :3000
Port Already in Use
Error: listen EADDRINUSE: address already in use :::3000
Multiple Dev Instances
Running npm run dev in multiple terminals for the same project.
The Fix
Kill Existing Processes
# Kill process on port 3000
npx kill-port 3000
# Or manually
lsof -i :3000
kill -9 <PID>
# Kill all node processes (careful!)
pkill -f node
Use Different Port
# Start on different port
npx nuxi dev --port 3001
# Or in package.json
{
"scripts": {
"dev": "nuxi dev --port 3001"
}
}
Clean Restart
# Stop current process (Ctrl+C)
# Then restart
npm run dev
Programmatic Restart Issues
When using nuxt.restart() in modules:
// modules/my-module.ts
export default defineNuxtModule({
setup(options, nuxt) {
// ❌ Wrong - might fail if not in right state
nuxt.hooks.hook('some:event', () => {
nuxt.callHook('restart')
})
// ✅ Better - check state first
nuxt.hooks.hook('some:event', async () => {
if (nuxt.options.dev) {
await nuxt.callHook('restart')
}
})
}
})
File Watcher Issues
Sometimes file watchers cause restart issues:
// nuxt.config.ts
export default defineNuxtConfig({
// Limit watched files
watch: ['~/config/**'],
vite: {
server: {
watch: {
ignored: ['**/node_modules/**', '**/.git/**']
}
}
}
})
Docker/Container Issues
# docker-compose.yml
services:
nuxt:
# Proper signal handling
stop_signal: SIGTERM
stop_grace_period: 10s
# Correct command
command: ["npm", "run", "dev"]
PM2 Process Manager
# If using PM2
pm2 stop nuxt-app
pm2 delete nuxt-app
pm2 start npm --name "nuxt-app" -- run dev
# Or restart
pm2 restart nuxt-app
Windows-Specific Issues
# Find process on port
netstat -ano | findstr :3000
# Kill process
taskkill /PID <PID> /F
# Or kill all node
taskkill /F /IM node.exe
Script to Clean Start
#!/bin/bash
# scripts/clean-dev.sh
# Kill any existing process on port 3000
npx kill-port 3000 2>/dev/null
# Clean nuxt cache
rm -rf .nuxt
# Start fresh
npm run dev
{
"scripts": {
"dev:clean": "bash scripts/clean-dev.sh"
}
}
IDE/Editor Integration
VS Code might hold processes:
- Close integrated terminal
- Use
Ctrl+Cproperly - Check for background tasks
HMR (Hot Module Replacement) Issues
// nuxt.config.ts
export default defineNuxtConfig({
vite: {
server: {
hmr: {
// Force HMR over specific port
port: 24678
}
}
}
})
Debugging
Check Server Status
// plugins/debug.ts
export default defineNuxtPlugin((nuxtApp) => {
if (process.dev) {
nuxtApp.hook('app:created', () => {
console.log('Nuxt app created')
})
}
})
Verbose Logging
DEBUG=nuxt:* npm run dev
Prevention
Proper Shutdown
Always use Ctrl+C to stop the dev server properly.
Single Instance
Only run one dev server per project.
Clean Scripts
{
"scripts": {
"dev": "nuxi dev",
"predev": "npx kill-port 3000 || true"
}
}
Quick Checklist
- Kill any orphaned processes on the port
- Only run one dev instance per project
- Use
Ctrl+Cfor proper shutdown - Try a different port if default is occupied
- Clear
.nuxtdirectory if issues persist - Check for IDE-held processes
- Use
DEBUG=nuxt:*for detailed logging