必须先安装linter核心包(steelbrain作者),再装linter-eslint等语言插件,否则静默失效;还需手动安装linter-ui-default显示错误,vue文件须启用lint html files并配置.eslintrc.js overrides。

linter 必须先装,否则所有语言插件都注册失败
Atom 1.24+ 版本起,linter 不再是可选依赖,而是强制前置框架。只装 linter-eslint 或 linter-flake8 这类语言插件,会静默失败——没报错、不标红、命令面板搜不到 Linter: Toggle,Settings 里也压根看不到对应配置入口。
正确顺序只有这一种:
- 先在 Atom → Preferences → Install 中搜索
linter,认准作者是steelbrain,安装并重启(或执行Window: Reload) - 再单独安装语言插件,比如 JavaScript 用
linter-eslint,Python 用linter-flake8 - 别碰名字相似但作者不明的包(如
linter-eslint-atom),兼容性极差
错误不显示?大概率缺了 linter-ui-default
linter 只提供检查逻辑,不负责画红波浪线、不弹悬浮提示、也不在底部状态栏显示问题数。真正干这事的是另一个独立插件:linter-ui-default。它不随 linter 自动安装,必须手动加。
常见现象包括:装完 linter-eslint 后保存 JS 文件,状态栏一直显示 “0 problems”,哪怕写个 const a = ; 也没反应。
- 命令行安装:
apm install linter-ui-default - 装完后检查 Atom → Packages → 搜索
linter-ui-default→ 确认右侧开关是蓝色“Enabled” - 如果启用了其他 UI 插件(如
linter-ui-plus或旧版linter-gutter),它们会压制linter-ui-default,建议禁用
Vue 文件里的 JS 不报错?Lint HTML Files + overrides 缺一不可
默认情况下,linter-eslint 把 .vue 当作 HTML 处理,<script></script> 块里的 JS 完全不会进 ESLint 流程。光勾选设置页里的 Lint HTML Files 不够,还必须让 ESLint 明确知道怎么解析 .vue。
项目根目录下 .eslintrc.js 必须包含 overrides 配置:
module.exports = {
// ... 其他配置
overrides: [
{
files: ['*.vue'],
processor: 'vue/vue',
rules: {
'no-unused-vars': 'off' // 示例规则,按需调整
}
}
]
}
- 确保已安装
eslint-plugin-vue和eslint-plugin-html:npm install eslint-plugin-vue eslint-plugin-html --save-dev -
Lint HTML Files选项在linter-eslint设置页里,必须勾上 - 如果用了
eslint-config-airbnb类扩展包,确认extends字段路径正确,且相关依赖已装
ESLint 路径/环境不对,标红位置错乱或干脆不触发
报错位置偏移、修改后错误不消失、状态栏总显示 “0 problems”——这些问题八成不是 UI 或插件没装对,而是 linter-eslint 根本没调起有效的 ESLint 实例。
-
linter-eslint设置页中的ESLint Path必须填项目本地路径:node_modules/.bin/eslint(Linux/macOS)或node_modules\.bin\eslint.cmd(Windows),别填全局eslint命令 - 项目根目录必须有
package.json和.eslintrc.*,否则 ESLint 降级用空规则,几乎不报错 - Mac 用户注意:Atom GUI 启动时的
PATH常和终端不一致,导致找不到node_modules/.bin/eslint。临时解法是终端执行atom --new-window启动 - ESLint v8+ 需搭配
linter-eslintv9.0.0+,旧版插件会解析失败且无提示
最常被忽略的一点:插件版本碎片化严重,apm list | grep linter-eslint 查到的版本号,要和当前 ESLint 主版本严格对齐。差一个大版本,就可能连 diagnostic 对象都传不进 linter-ui-default。











