Svelte启动异常求助:新创建项目却加载已删除的旧项目
解决Svelte新项目启动后显示旧项目的问题
这问题我之前帮好几个开发者排查过,大概率是缓存或者开发服务器的端口复用问题,咱们一步步来排查解决:
1. 先排查浏览器缓存
浏览器很容易缓存静态资源(比如JS、CSS文件),哪怕你已经更新了项目,它还是会加载旧的缓存内容。试试这几个操作:
- 用强制刷新:Windows按
Ctrl+Shift+R,Mac按Cmd+Shift+R - 打开无痕/隐私窗口访问地址,看看是否显示新项目
- 直接清空浏览器的缓存(在浏览器设置里找到“清除浏览数据”,勾选缓存文件后删除)
2. 清理Svelte/Vite的开发缓存
Svelte现在默认用Vite作为构建工具,Vite和SvelteKit都会生成缓存文件,这些缓存可能残留了旧项目的内容:
- 先停止当前运行的开发服务器(按
Ctrl+C终止进程) - 删除项目目录下的这两个文件夹:
.svelte-kit(SvelteKit的构建缓存)node_modules/.vite(Vite的依赖缓存)
- 重新执行
npm run dev启动项目,看看是否正常显示新项目
3. 检查端口是否被旧进程占用
哪怕你删除了旧项目,旧项目的开发服务器可能还在后台偷偷运行,占用了默认的5173端口,导致你访问的还是旧进程的服务:
- Windows系统:
- 打开命令提示符,执行
netstat -ano | findstr :5173(5173是Vite默认端口,如果你的端口不一样,替换成对应的) - 找到输出里的进程ID(PID),然后执行
taskkill /PID <你的PID> /F强制杀死进程
- 打开命令提示符,执行
- Mac/Linux系统:
- 打开终端,执行
lsof -i :5173 - 找到PID后,执行
kill -9 <你的PID>强制终止进程
- 打开终端,执行
- 杀死旧进程后,重新启动新项目的
npm run dev,再访问地址试试
4. 刷新本地DNS缓存(可选,概率较低)
如果上面的方法都没用,可能是本地DNS缓存导致的异常,试试刷新DNS:
- Windows:执行
ipconfig /flushdns - Mac:执行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder(需要输入管理员密码) - Linux(systemd系统):执行
systemd-resolve --flush-caches
一般来说,前三个方法就能解决问题了,先从浏览器缓存开始试,这个最容易排查~
内容的提问来源于stack exchange,提问作者Paul Lopez




