npx create-react-app安装React报cb.apply is not a function错误
问题根因
从debug日志可以直接定位问题来源,和Nodist直接相关:
- 当前运行的Node版本为v18.1.0,但Nodist内置绑定给npx调用的npm版本为5.1.0(2017年发布的老旧版本)
- 老版本npm依赖的
graceful-fs库和Node 18+的内置fs API存在兼容性断裂,直接触发cb.apply is not a function报错 - 本质是Nodist的路径优先级逻辑有bug:把自身内置的老旧npx、npm路径放在了高优先级,导致切换高版本Node后,调用的还是和新Node不兼容的老版npm/npx,出现版本错位。
修复步骤(按优先级排序)
- 先通过Nodist切换到Node LTS长期支持版本(可选18.17+ 或 20.x 稳定线,不要用早期beta版Node18),切换完成后不要用Nodist自带的npm,手动执行
npm install -g npm@latest升级全局npm到和当前Node匹配的版本,执行npm -v确认版本号在8.x以上后,再重新运行npx create-react-app命令测试。 - 如果第一步操作后仍报错,打开Windows终端执行
where npx、where npm检查路径优先级:如果返回的第一个可执行文件路径是C:\Program Files (x86)\Nodist\bin\目录下的文件,就调整系统环境变量的Path顺序,把当前选中Node版本的安装路径优先级调到Nodist bin路径之前,让Node自带的新版npm、npx优先被系统调用。 - 临时快速绕过方案:不用npx命令,直接执行
npm init react-app 你的项目名称创建项目,该命令会直接调用当前全局npm绑定的create-react-app版本,不会走Nodist内置的老旧npx逻辑。 - 如果以上调整都无效,直接卸载Nodist,下载Node LTS版本官方安装包手动安装,安装时勾选自动配置环境变量选项,安装完成后执行
npm cache clean --force清空缓存,再重新执行项目创建命令即可。
内容的提问来源于stack exchange,提问作者Lauro235
相关产品推荐
相关产品推荐

