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

spacemacs

#1

刚开始使用 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 , 也可以正常使用了.


tern binary not found!!
#2

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


#3

也可以用nvm.el来解决吧


#4

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


#5

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


#6

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


#7

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


#8

Never see it if it’s just a warning …


#9

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


#10

并不只是警告…


#11

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

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


#12

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


#13

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


#14

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


#15

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

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

#16

emacs version: 26.3

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