linter-jshint 在 atom 中已不可用,因其依赖的 jshint 自2021年停更,无法兼容 node.js 16+ 和 atom 的旧 electron 内核,导致静默失效;应改用 linter-eslint v9.3.1 等兼容组合。

linter-jshint 在 Atom 中已基本不可用,2026 年继续配置它大概率失败,根源不在你操作不对,而在生态已弃用。
为什么 linter-jshint 安装后不报错也不检查
这不是配置问题,是依赖链断裂。linter-jshint 依赖 jshint CLI 工具,而该工具自 2021 年起停止维护,Node.js 16+ 环境下 jshint 会因 fs.existsSync 被废弃、Buffer 构造函数变更等报错,典型错误如:TypeError: fs.existsSync is not a function 或 ERR_INVALID_ARG_TYPE。即使强行降级 Node,Atom 本身(基于 Electron 旧内核)也无法兼容新版 V8 的模块解析逻辑。
常见现象包括:安装成功但无任何波浪线提示;保存文件后控制台静默;apm list 显示已启用,但 linter 核心未收到任何 provider 返回。
- 必须先装
linter包,否则linter-jshint根本不会注册服务 -
jshint必须全局安装(npm install -g jshint),仅项目本地安装无效 - Windows 用户若未将
%USERPROFILE%\AppData\Roaming\npm加入 PATH,apm就找不到jshint可执行文件
替代方案:改用 linter-eslint + eslint-config-airbnb
ESLint 是当前唯一活跃维护的 JS/TS 检查工具,linter-eslint 插件能无缝对接 Atom 的 Linter 框架。它不依赖全局 CLI,而是通过 eslint npm 包直接调用 API,规避了 jshint 的二进制兼容问题。
实操步骤:
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
- 卸载
linter-jshint:apm uninstall linter-jshint - 安装
linter-eslint:apm install linter-eslint - 在项目根目录初始化 ESLint 配置:
npx eslint --init(选 “React + TypeScript + Airbnb” 最稳妥) - 确保项目
package.json中包含eslint和eslint-config-airbnb作为devDependencies - Atom 不需要额外配置路径——只要项目里有
.eslintrc.js,插件会自动识别并加载
注意:linter-eslint 默认只检查当前打开的文件,若需检查整个项目,得配合 eslint-cli 手动运行 npx eslint .。
.jshintrc 文件现在毫无作用
哪怕你把 .jshintrc 放在项目根目录或用户主目录,linter-jshint 也读不到它——因为插件底层根本没触发 jshint 实例化。更关键的是,jshint 自身已移除对 .jshintrc 中 esversion、globals 等字段的校验逻辑,配置项写错也不会报错,只是静默失效。
如果你看到旧项目里还留着 .jshintrc,建议直接删掉,避免和 ESLint 的 globals 声明冲突。ESLint 的等效写法是:
module.exports = {
globals: {
jQuery: 'readonly',
$: 'readonly'
}
};
最容易被忽略的兼容性断点
Atom 编辑器本身在 2025 年底已停止官方更新,其底层 Electron 版本卡在 1.8.x,这意味着:
- 所有依赖现代 Node API(如
fs.promises、globalThis)的 lint 工具都无法工作 -
linter-eslint必须锁定在v9.4.0以下版本,新版linter-eslint@10+强制要求 Electron 22+,Atom 直接拒绝加载 - 不要试图用
apm install安装 GitHub 上的 fork 分支——Atom 的包加载器不支持动态 resolve,只会报Cannot find module 'atom-package-deps'
真正能跑通的最小可行组合是:Atom v1.60.0 + linter v3.4.0 + linter-eslint v9.3.1 + eslint v8.57.0。换任何一个,都可能突然失灵。










