live server下js不执行主因是路径错误或file://协议残留;需确认src路径与html同级、用http协议访问、检查network面板404、es模块须带.js扩展名且禁用缓存。

Live Server 启动后 HTML 能打开,但 script 标签引入的外部 JS 不执行、控制台报错或逻辑未生效——这几乎一定是路径解析或协议限制问题,不是代码本身有 bug。
为什么 <script src="app.js"></script> 找不到文件?
Live Server 默认以当前 HTML 文件所在目录为根路径(webRoot),但浏览器实际请求的是 http://127.0.0.1:5500/app.js。如果 app.js 不在同级目录,或路径含中文/空格/大小写不一致,就会 404。
- 检查开发者工具 Network 面板:筛选
JS,看app.js请求状态是 404 还是 pending —— 404 直接暴露路径错误 - 确认
app.js和 HTML 文件是否真在同一个文件夹下;若在js/app.js,src必须写成"js/app.js",不能只写"app.js" - VSCode 资源管理器里右键文件 →
Copy Relative Path,粘贴到src属性中,避免手误 - 路径含中文或空格时,部分旧版插件可能解析失败(虽 Live Server 已修复,但建议统一用英文命名)
import 语句报 TypeError: Failed to resolve module specifier
这是典型的 ESM 模块加载失败,发生在 <script type="module"></script> 中。Live Server 支持模块,但有硬性前提:
-
type="module"的<script></script>只接受相对路径或绝对路径(/js/main.js),不支持裸导入(import { foo } from 'lodash') - 所有被
import的文件必须显式带扩展名:import './utils.js'✅,import './utils'❌ - 如果用了
import,HTML 文件必须通过http://协议访问(Live Server 满足),file://下必报错 - 检查 Network 面板里被 import 的文件是否返回 200;若返回 404 或 MIME 类型错误(如服务器返回
text/plain而非application/javascript),需确认文件存在且后缀正确
JS 执行了但逻辑没更新?缓存和 sourcemap 是元凶
你改了 app.js,保存后刷新页面,控制台仍打印旧值——这不是 Live Server 失效,而是浏览器缓存或 sourcemap 错位导致调试信息滞后。
- 强制刷新(
Ctrl+Shift+R)或禁用缓存(DevTools → Network → 勾选Disable cache) - HTML 中 script 标签加时间戳参数防缓存:
<script src="app.js?t=1725228120"></script> - 如果是构建项目(Vite/webpack),确保
build.sourcemap开启,且launch.json中sourceMapPathOverrides映射正确,否则断点打在源码却停在 bundle 里 - Live Server **不监听 JS 文件变更并自动重载**,它只对 HTML/CSS/图片等资源热更新;JS 修改后必须手动刷新页面
为什么 fetch 或 localStorage 在 Live Server 下也报错?
极小概率发生,但一旦出现,基本锁定为跨域或协议残留问题:
- 检查地址栏是否真的是
http://127.0.0.1:5500/xxx.html—— 如果你手输过file:///或从收藏夹打开,JS 仍运行在file://协议下,fetch会被拦截,报net::ERR_FILE_PROTOCOL - 某些安全软件或 Edge 组策略会静默禁用
file://下的 JS(尤其 Windows 默认设置),此时即使 Live Server 已启动,双击 HTML 文件仍走file:// - 关闭所有浏览器窗口,再通过 Live Server 右键菜单打开,确保地址栏开头是
http://
最常被忽略的一点:Live Server 启动的是一个静态服务器,它不执行构建逻辑、不处理 .ts 或 .vue,也不转译 import。你看到的“失效”,90% 是路径没对齐、缓存没清、或协议没切过去——而不是插件坏了或者 VSCode 有问题。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











