0%

升级Big Sur后,hexo无法使用

问题产生

元旦放假期间升级了一下macOS系统,升级到最新的macOS Big Sur 版本11.1之后发现在终端敲hexo clean报错,具体的错误信息如下:

1
2
poet@poetdeMacBook-Pro ~ % hexo clean
zsh: command not found: hexo

网上搜索一下,发现大家也有类似问题,但是具体的情况和我还不太一样。我的电脑上安装了nvm,升级之后发现我电脑上node默认升级到了v11.15.0

1
2
poet@poetdeMacBook-Pro ~ % node -v
v11.15.0

原因分析

而每一个node版本都会维护一套自己的bin目录,我发现我自己的电脑上安装了3个不同的node版本,只有v8.11.1这个版本的bin目录下才有hexo的可执行文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
poet@poetdeMacBook-Pro ~ % cd /Users/poet/.nvm/versions/node/
poet@poetdeMacBook-Pro node % ls
v11.15.0 v7.10.0 v8.11.1

# 在v8.11.1目录下面的bin目录查看到 hexo
poet@poetdeMacBook-Pro node % cd v8.11.1
poet@poetdeMacBook-Pro v8.11.1 % ls
CHANGELOG.md README.md etc lib
LICENSE bin include share
poet@poetdeMacBook-Pro v8.11.1 % cd bin
poet@poetdeMacBook-Pro bin % ls
express hexo n node npm npx nrm

# 在v7.10.0目录下面的bin目录下没有查看到hexo相关的文件
poet@poetdeMacBook-Pro node % cd v7.10.0
poet@poetdeMacBook-Pro v7.10.0 % ls
CHANGELOG.md README.md etc lib
LICENSE bin include share
poet@poetdeMacBook-Pro v7.10.0 % cd bin
poet@poetdeMacBook-Pro bin % ls
node npm

# 在v11.15.0目录下面的bin目录下没有查看到hexo相关的文件
poet@poetdeMacBook-Pro node % cd v11.15.0
poet@poetdeMacBook-Pro v11.15.0 % ls
bin include lib share
poet@poetdeMacBook-Pro v11.15.0 % cd bin
poet@poetdeMacBook-Pro bin % ls
node npm npx

解决办法

最终我的解决办法是,将v8.11.1/bin/hexo文件连接到/usr/local/bin目录下,在终端输入hexo clean命令时,系统会去/usr/local/bin目录中查找对应的可执行文件,找到hexo后,会连接到v8.11.1/bin/hexo目录下调用hexo可执行文件,最终执行命令。

1
poet@poetdeMacBook-Pro % ln -s /Users/poet/.nvm/versions/node/v8.11.1/bin/hexo /usr/local/bin/

执行完成之后,验证一下最终的命令是否有效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
poet@poetdeMacBook-Pro ~ % hexo
Usage: hexo <command>

Commands:
help Get help on a command.
init Create a new Hexo folder.
version Display version information.

Global Options:
--config Specify config file instead of using _config.yml
--cwd Specify the CWD
--debug Display all verbose messages in the terminal
--draft Display draft posts
--safe Disable all plugins and scripts
--silent Hide output on console

For more help, you can use 'hexo help [command]' for the detailed information
or you can check the docs: http://hexo.io/docs/

ln -s 源文件 目标文件 这个语法是给源文件建立一个软连接,软连接是一个特殊的文件,它包含源文件的具体位置。类似于Windows系统的快捷方式。

参考链接

Hexo:command not found的问题解决
linux 创建连接命令 ln -s 软链接