(Spacemacs) Warning: tern binary not found! 终于解决了它!

刚开始使用 spacemacs 的时候就有这个问题, 当时没太在意.

后来问题解决的差不多的时候, 终于轮到它了. 因为前些天使用 Linux 系统反而没有这个问题了, 然后 Mac 还是存在的.

官网说的只有 Windows 才会有这个问题, 而 Mac 上出现这个问题的原因是因为我使用了 nvm. 好大的坑.

使用 nvm 安装的包位置和 npm 是不一样的, 而且我不知道是我操作有误还是别的原因, 总之, 即使把 nvm 下的 tern 的路径给添加进去还是不生效. Linux 上没这问题就是因为我用的 npm 安装的 tern

好用的姿势是把 nvm 删掉, 用 npm 装上 tern . 其实如果你从命令行去使用 emacs 你会发现根本没有这个问题, 这里顺便提一下, pathexec-path 的区别其实就是命令行的环境变量路径和 GUI 的变量路径. 所以, 如果你不想删除 nvm , 还有一个办法. 从你的命令行去启动它: open ~/Application/Emacs.app, 这样做的话你启动的 GUI 就会继承命令行里的 path , 也可以正常使用了.

2 个赞

发个帖方便大家以后搜到就可以解决了~

1 个赞

也可以用nvm.el来解决吧

别的办法就没试过了. 如果也能解决可以写在楼下, 省的大家到处找

我在mac上有相同的问题,不知道会对使用带来什么影响?

因为没怎么做过前端,所以才知道tern是一个java的代码分析工具,我用 npm install -g tern 装上tern后,就没有这个警告了。

对啊。。。我也是这么搞定的好像。

Never see it if it’s just a warning …

1 个赞

如果是直接使用nodejs安装的那个npm是直接安装即可, 如果使用了nvm即使安装了tern也不会生效. 解决nvm的办法我没找~ 反正把nvm去掉再安装tern是没问题的. 没有tern你会失去很多智能提示.

并不只是警告…

英吹斯汀,我是用 yarn 全局安装的 tern,从 GUI 启动的话也会看到这句 warning,但有意思的是不会影响 tern 正常工作。

然后我试了试 terminal 启动 emacs,warning 的确消失了,不过启动时间也增加了 1s 左右。

这个是因为 terminal 可以识别 nvm 或者 yarn 安装的默认路径, 但是GUI 不能识别. GUI 里面好像要特别设置一下, 我没折腾. 直接 npm 安装的就可以了.

问题是 yarn安装的 我也放到PATH里面了 而且还 ln 到了 /usr/local/bin 还是有warning

1 个赞

emacs并不能识别 shell中的nvm设置的环境变量,需要借助nvm.el, 在emacs中(nvm-use “xxx”)来设置

mac中遇到了这个问题,卸载nvm重新安装依旧报错,我用下面的方式解决了 在 .spacemacs 中的 user/init设置:

 (setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
 (setq exec-path (append exec-path '("/usr/local/bin")))
2 个赞

emacs version: 26.3

在安装有nvm的情况下npm i tern -g之后,Emacs GUI下不再报错。