离线安装atom插件失败主因是插件目录缺失node_modules;必须在与目标机完全一致的atom版本下用apm install --production构建,生成含依赖的可运行副本,且本体须为官方安装包。

离线安装 Atom 插件失败,90% 的情况不是路径放错了,而是插件目录里压根没有 node_modules —— Atom 启动时只加载已构建完成的包,不执行任何自动安装逻辑。
为什么直接复制 GitHub 源码包会报 Cannot find module 'season'
GitHub 上下载的插件仓库(如 linter-gcc)是源码,不含 node_modules;Atom 不会像 Node.js 项目那样在启动时调用 npm install。它只读取已存在的 node_modules 目录并加载模块。
- 常见错误现象:重启 Atom 后插件不显示、控制台报
Error: Cannot find module 'season'或Failed to activate package 'xxx' -
package.json中的dependencies必须被实际安装进node_modules,否则require('fs-plus')这类语句直接崩 - 某些插件(如
minimap)还依赖构建产物(dist/或lib/),源码 ≠ 可运行态
必须用 apm install --production,不能用 npm install
apm 是 Atom 定制的包管理器,和 npm 在版本解析、engines.atom 校验、postinstall 脚本执行上完全不兼容。用 npm install 替代,大概率导致插件能加载但功能缺失。
-
apm install --production linter-gcc会跳过devDependencies,生成轻量且可用的副本 - 必须在与目标离线机**完全一致的 Atom 版本**下运行(例如离线机是 v1.69.0,则构建机也必须是 v1.69.0)
- 执行后检查插件目录(如
~/.atom/packages/linter-gcc)是否存在node_modules,且其中包含gcc、atom-linter等子目录 - Windows/macOS/Linux 都必须用官方安装包(
AtomSetup-x64.exe/atom-amd64.deb/Atom-mac.zip),否则apm二进制文件缺失或损坏
哪些插件根本无法离线使用
三类插件即使拷全 node_modules 也必然失败,因为它们在运行时强依赖网络:
- 依赖实时 API:如
autocomplete-atom-api(首次启用时拉取 GitHub 上的 Atom API 文档) - 含动态下载逻辑:如部分
language-rust版本会在打开.rs文件时尝试下载语法定义 - 需要全局
apm认证:如sync-settings,离线机从未执行过apm login就无法初始化 - 这类插件启动时通常卡住或报
Failed to fetch https://...,控制台一眼可辨
真正麻烦的不是复制文件,而是每个插件对激活时机、依赖粒度、构建要求都不同——autocomplete-python 要等 language-python 加载才触发,linter-gcc 要编译 native 模块,go-plus 还得找外部 gopls。离线前,务必先在同版本联网机上跑通 apm install --production && apm test,确认它到底要什么。











