必须重启atom才能加载atom-live-server插件并注册快捷键,且浏览器必须通过http://协议访问(如http://localhost:3000/index.html),file://协议会导致fetch、@import、es模块等全部失效。

装完不重启 Atom,atom-live-server 就不会加载;用 file:// 打开 HTML,热更新永远不生效。
安装插件必须重启 Atom 才能注册快捷键
用 apm install atom-live-server 命令装完后,Atom 不会自动加载新插件。不重启,Ctrl+Alt+L(Windows/Linux)或 Cmd+Alt+L(macOS)根本没反应——这不是快捷键冲突,是插件根本没进内存。
常见错误现象:
- 点菜单
Packages > Atom Live Server > Start Server灰掉不可点 - 按快捷键无任何输出,控制台也不报错
- 右键 HTML 文件没有
Start Live Server选项
解决方法只有一步:关掉 Atom,再重新打开。重启后状态栏右下角会显示“Live Server: idle”,说明插件已就绪。
启动服务前必须先打开目标 HTML 文件
atom-live-server 不是以项目根目录为监听起点,而是以「当前打开的 HTML 文件所在目录」为根路径,只监听该目录及其子目录下的变更。如果 index.html 在 /project/src/,而 style.css 在 /project/assets/,改 CSS 不会触发刷新。
使用场景注意点:
- 先在 Atom 中打开你要预览的
index.html(不是只打开文件夹) - 确保右下角状态栏显示语法为
HTML,否则插件可能识别失败 - 快捷键
Ctrl+Alt+L启动后,浏览器自动跳转到http://localhost:3000/index.html—— 这个地址必须是http://,绝不能是file:///
浏览器必须走 http:// 协议,否则跨域和模块加载全崩
双击 HTML 文件、右键“Open in Browser”、拖进浏览器窗口……这些操作都走 file:// 协议,会导致:
-
@import的 CSS 文件不生效 -
fetch()报错TypeError: Failed to fetch(CORS 阻止) - ES 模块(
type="module")加载失败,提示Access to script at 'file://...' from origin 'null' is denied - 本地图片、字体、API 请求全部挂掉
正确做法只有一条:等 atom-live-server 启动后,让它自己打开浏览器,或手动访问 http://localhost:3000/xxx.html。端口被占时它会自动顺延到 3001、3002……但不会提示——如果页面打不开,先看 Atom 底部状态栏有没有显示实际端口号。
热更新失效的三个隐藏原因
即使服务起来了、地址也对了,仍可能不刷新。最容易被忽略的是:
- 改的是
@import引入的 CSS 文件 →atom-live-server不监听这类导入,只响应<link rel="stylesheet">和<script></script>标签引入的资源 - 同时运行了 Vue/React 脚手架的
npm start→ 两个服务抢端口(默认都是 3000),atom-live-server静默失败,不报错也不起效 - HTML 文件里写了相对路径如
./assets/main.js,但该路径不在当前 HTML 所在目录的子目录内 → 文件变更不被监听,自然不触发 reload
热更新本质就是监听文件系统事件 + location.reload(),它不解析 HTML 结构、不追踪依赖图、不代理请求——这点比现代构建工具原始得多,但也正因如此,它轻、快、没黑盒。











