最近准备捣鼓几个开源项目,打算使用docsify在github pages整在线文档。
然鹅卵了,开开心心的照着docsify文档安装,被一万点暴击滑过。

环境

win10 + node.js + npm + docsify.-cli

起因

安装docsify过程除了两个依赖(来自mac的伤害)警告之外,并无异样。

然后当我执行docsify init ./docs的时候,给我整懵了。

cmd报错为docsify不是内部命令或外部命令,也不是可运行程序

行吧,遇事不要方,先打开搜索引擎。

然鹅又方了,居然没找到解决方案,还在docsify的开源仓库下看到了跟我一模一样报错情况的。

所以解决完之后,特别记在此处,等有缘人来避坑。

分析过程

起初以为是安装出错了,反正先重装docsify,重装之后也没看到效果。

之后找到docsify安装目录观察了一下,发现文件夹下存在cmd、ps1等文件。

索嘎,我tm居然开始怀疑是人家的批处理写得不够严谨,又一次被自己自大到笑了。

经过一顿操作,确认是cmd是问题,但却不是人家写的有问题。

cmd代码如下

@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%"  "%dp0%\node_modules\docsify-cli\bin\docsify" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b

而是因为我的安装路径有问题,%dp0%\node_modules\docsify-cli\bin\docsify,这句姑且理解为docsify的安装根目录即可。

这个路径跟我的实际安装路径相差甚远,为什么呢?因为我手欠的修改了npm模块默认全局安装目录。

下面让我给自己演示一下自己坑自己

# 查看npm默认安装路径
npm config ls
# 修改全局模块安装路径
npm config set prefix "D:\nodejs\node_modules\npm_global"
# 修改缓存路径
npm config set cache "D:\nodejs\node_modules\npm_cache"

所以我的docsify安装路径其实是在D:\nodejs\node_modules\npm_global\node_modules\下,搞人呀。

此处吐槽一下npm非要把全局模块和缓存塞到C盘的行为......

解决方案

第一种,修改上节所说的路径为真实安装%dp0%\node_modules\npm_global\node_modules\docsify-cli\bin\docsify路径,然后将该cmd文件移至nodejs根目录下即可。

修改完之后我一直在思考,这可能是治标不治本呀。以后安装其他模块说不得又来改。

所以又查阅了相关资料,最终解决。

解决方案如下

# 查看npm默认安装路径
npm config ls
# 修改全局模块安装路径
npm config set prefix "D:\nodejs\npm_global"
# 修改缓存路径
npm config set cache "D:\nodejs\npm_cache"

# 系统环境变量添加NODE_PATH为修改的全局模块安装路径
# 用户环境变量PATH添加一个修改的全局模块安装路径
# 完美解决

本文由 大古 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论