tern插件在sublime中无效,因其仅为客户端,需手动启动tern服务、配置正确port、确保项目根目录有有效.tern-project文件(如{"ecmaversion": 2022}),并避免与javascript enhancements冲突。

为什么直接装 tern.js 插件在 Sublime Text 里基本没用
因为 tern.js 本身不是 Sublime 插件,而是一个独立的 Node.js 服务进程;Sublime 里所谓“Tern 插件”(如 TernJS 或 SublimeCodeIntel)只是个客户端,必须连上运行中的 tern 服务才能工作。但默认配置下,它既不自动启动服务,也不指定项目根目录下的 .tern-project,结果就是补全始终返回空、跳转失败、状态栏显示 Tern: disconnected。
手动启动 tern 服务并绑定到当前项目
别依赖插件自动拉起服务——它不可靠,尤其在 macOS/Linux 下 PATH 不继承时必挂。正确做法是:在项目根目录终端中手动运行:
node node_modules/tern/bin/tern --port 3000 --no-port-file
然后确保 Sublime 的 Tern 插件设置里 tern_command 指向本地 node_modules/.bin/tern,且 port 和上面一致;同时确认项目根目录存在有效的 .tern-project 文件(至少含 {"ecmaVersion": 2022})。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- Windows 用户注意:路径中不要用反斜杠
,一律用正斜杠/或双反斜杠\ - 如果报
Cannot find module 'acorn',说明tern依赖未装全,回到项目根目录执行npm install tern(不是全局装) - Sublime 重启后首次打开 JS 文件,控制台(
Ctrl+`)应看到Tern: connected to localhost:3000
TernJS 插件和 JavaScript Enhancements 别混用
两者都试图提供跳转/补全,但底层协议冲突:TernJS 直连 tern 服务,JavaScript Enhancements 默认走 typescript-language-server。同时启用会导致符号解析错乱、CPU 占用飙升、甚至 Sublime 卡死。
- 只用
TernJS:适合纯 JS 项目,依赖.tern-project配置插件(如commonjs、es_modules) - 只用
JavaScript Enhancements:适合 TS 或带tsconfig.json的项目,自动 fallback 到 Tern 仅当无 TS 服务时 - 禁用任一插件后,务必重启 Sublime,否则旧连接残留仍在后台跑
补全失效时优先查 .tern-project 而不是插件设置
90% 的“补全不出来”问题出在 .tern-project 配置错误或缺失,而非插件本身。这个文件必须放在你用 Sublime 打开的文件所在项目的最外层根目录(不是 Sublime 工作区根目录,也不是父级文件夹)。
- 最小可用配置示例:
{"ecmaVersion": 2022,"libs": ["browser","node"],"plugins": {"commonjs": {},"es_modules": {}}} - 若项目用 Webpack/Aliases,必须加
"defs"字段手动声明模块路径,tern不会读webpack.config.js -
libs里漏写"node",fs.readFile就不会被识别;漏写"browser",document.getElementById补全就为空
真正麻烦的从来不是装插件,而是让 tern 知道你的代码到底“长什么样”。.tern-project 写错一行,补全就哑火,而且没有任何错误提示——它只是安静地返回空列表。










