离线安装Atom插件前必须用官方deb/rpm/msi包安装本体,禁用.zip;需在同版本Atom中执行apm install --production生成含node_modules的完整副本,并确保activationHooks、依赖包(如language-python)及构建产物齐全。

离线安装前必须确认 Atom 本体安装方式是否正确
直接解压 AtomSetup-x64.zip 或使用非官方“绿色版”,会导致后续所有插件离线安装失败——因为缺失 resources/app/apm 和签名验证机制。Windows 用户只认 AtomSetup-x64.exe,Debian/Ubuntu 必须用 atom-amd64.deb,CentOS/RHEL 必须用 atom.x86_64.rpm。dpkg/yum 安装后会自动补全 libasound2、libxkbfile1 等底层依赖,而 zip 包完全不提供这些。
apm install --production 是唯一可靠的离线插件构建命令
在联网机器上执行该命令,不是为了“下载插件”,而是生成含完整 node_modules 的可运行副本。常见错误包括:
- 仅复制 GitHub 源码仓库(如
git clone后直接拷贝),缺少node_modules→ 启动时报Cannot find module 'season' - 用
npm install替代apm install→ 缺少 Atom 特定的构建步骤(如编译 native 模块),导致linter-gcc等插件无法调用gcc - 未匹配目标环境 Atom 版本 → 例如在 v1.69.0 环境下用 v1.72.0 构建插件,激活时出现
Cannot read property 'onDidStopChanging' of undefined
正确流程:在与离线机完全一致版本的 Atom 下,运行 apm install --production linter-gcc,进入 ~/.atom/packages/linter-gcc 确认存在 node_modules 目录及其中的 gcc、atom-linter 子目录,再整体打包迁移。
手动复制插件文件夹后仍不工作?检查这三处
直接把 GitHub 源码解压到 ~/.atom/packages/ 是最常见也最容易出错的操作。装完不生效,先确认:
-
package.json是否存在,且"name"值与文件夹名完全一致(比如文件夹叫autocomplete-python,package.json里就不能是"name": "atom-autocomplete-python") -
node_modules目录是否生成 —— 没运行npm install就复制,require('fs-plus')这类模块必然报Cannot find module - 插件根目录下是否有
lib/或dist/构建产物(部分插件如minimap需要apm link或npm run build,源码 ≠ 可运行态)
为什么 autocomplete-python 装了但没补全?
这个插件不靠“启用开关”生效,而是靠 Atom 的 activationHooks 触发:只有打开 .py 文件、且 language-python 包已加载时,它才会初始化。
-
package.json中"activationHooks"字段缺失或写错(比如写成"python"而非"language-python:grammar-used") -
"main"指向的入口文件(如./lib/main.js)不存在,或路径大小写不匹配(Windows 下敏感) - 没装
language-python插件——它是autocomplete-python的前置依赖,离线时必须一并安装
真正麻烦的不是下载或复制,而是每个插件对激活时机、依赖粒度、构建要求都不一样——autocomplete-python 依赖语法包触发,linter 依赖事件监听,go-plus 还得调外部 gopls 二进制。离线部署前,最好先在有网机器上跑通一次 npm install && apm test,看它到底依赖什么。

















