npm ERR! cb.apply is not a function

当我试图运行npx命令来创建一个react项目demo的时候

npx create-react-app my-app

命令行出现报错提醒:

npm ERR! cb.apply is not a function

此次运行环境macOS,使用了node版本工具n

bug解决办法

利用n进行node版本切换的时候,要使用管理员命令sudo,例如:

sudo n 16.14.2

bug解决原理分析

因为最开始直接使用的n命令进行的node版本切换,之前也是一直这样使用,例如:

n 16.14.2

但是之前运行完此命令的时候,版本切换的结果中有很多warning提醒:
node版本切换

从报错结果可以看出,n工具是将原先的node版本和之前下载好的node版本两个文件夹之间进行替换,从而实现node版本切换

但是在直接使用n命令进行切换的话,会出现许多报错信息,进行分析可以发现有许多文件没有转移成功。

但是当我进行node版本查看的时候,发现已经切换成功

node -v
# v12.13.0

先前因为版本切换成功,并且相关node命令也好使,所以我对于node版本切换过程中的报错没有特别在意。

知道在运行文章开头的npx命令时发现致命报错。

针对此项报错,我进行了一番Google,发现大家的处理方法的原理基本上都是进行node重装。但是因为我的工作机中集成了许多配置,不想重新搞,所以放弃了这种做法

在浏览过程中发现有一篇文章,博主说自己运行n命令进行node版本切换的时候,一直切换不成功,只能使用sudo命令才行。

我也试了一下,果然发现了一些不一样的地方:

npxError2

非常丝滑的切换,咩有任何报错提示,接着运行上面的npx命令也成功了。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。