前言
之前用的macbook,现在换成了Windows,所以把博客(hexo+github搭建的,当然这不重要)也迁移过来。然后就在window下进行前端环境的搭建。与mac不同,在windows环境下,在安装环境过程中,需要配置环境变量。然后就踩坑了!
事情是这样的,我在安装了node、git之后,使用git bash来安装hexo时,安装成功,但是在执行hexo命令时就会报错如下
1 | line 12:node:command not found |
但是在cmd里执行hexo命令,进行博客的发布,就一切正常。
安装nodejs
nodejs的安装也很方便,直接到官网上下载,一路next安装就行。安装完之后进行全局变量配置,方便使用。
然后我网上就随便找了教程进行配置,基本步骤如下:
cmd终端里执行(其中…/nodejs是你node安装的路径)
【warnning:以下命令请勿模仿!!!】
1 | npm config set prefix ".../nodejs/node/node_global" |
然后配置环境变量,把node的安装路径,以及上面设置的prefix路径,都加到 系统变量 的path里。
这个时候在cmd里面进行npm -v和node -v测试都有版本号出现了,说明配置成功!
安装git
也是官网下载,一路next安装好就行,再把git配置到底环境变量里。
git有自带的终端,git bash终端使用也蛮方便。安装好git后,桌面空白处右键,有git bash here选项,点击就可以使用了。
然后我通过git bash 使用npm执行 npm install hexo-cli -g 来全局安装hexo,显示安装成功后,执行hexo -v结果就是前言里面提到的问题,command not found!
问题排查
在git bash里执行npm -v以及node -v显示出版本号,正常没问题。
谷歌搜索,发现大都说是环境变量配置的问题,我检查环境变量,发现配置也没啥问题,在git bash里面查看
1 | npm root -g |
等命令,也正常。
这个时候我想到使用用cmd终端来执行hexo命令,看是否正常。cmd终端里输入hexo -v,正确地输出了版本信息。执行hexo命令,能够正常的发布博客。
回到git bash里执行hexo命令,依然报错。
虽然cmd里面可以正确使用,但是我还是想能够使用git bash终端,因为git bash相比于cmd终端,有更加强大的功能,而且我实在是太想知道为什么git bash偏偏不行了。所以继续排查
在git bash里执行where hexo显示能够找到hexo所在目录,但是出错。奇了怪了!
我在问题排查的时候发现,其他人在设置node全局路径时,多数都是在nodejs/node_global目录,而我设置的中间多了一个node的层级目录,但我觉得应该不是这个问题,node_global路径可以任意放置,只要把环境变量配置好就没问题。所以就继续排查了。
紧接着又折腾了很久,走了好些弯路。比如配置hexo的环境变量,搜索git bash hexo command not found,搜索git bash command not found but cmd is ok等等相关问题都无法解决。因为我使用的是chrome浏览器,所以用的也是英文搜索。我猜测国外的类似问题是不是很少,当然很可能是因为我没检索到。
接下来我尝试使用百度浏览器来搜索 line 12 node command not found,还真发现了问题所在。
解决
npm等在执行的时候是忽略后缀的,本应该读的是node.exe,但是给读成了node目录,即最开始配置prefix时的那个…/nodejs/node了,所以报错node:command not found.
我删掉了…/nodejs/node下面的node_global、node_cache文件夹删除,重新配置了prefix,嗯就配在了…/nodejs/下,相应的也要更改环境变量。
回到git bash执行发现问题依然存在,额?我又看了下nodejs目录,发现node文件夹还在,删掉,这个时候再在git bash里面执行,就正常了。
最后
原来是被最开始配置时参考的教程坑了,知道真相的我眼泪掉下来…
不过解决这个问题的过程也很有意思就是了,特此记录!