问题描述
尽管我的npm版本是6.9.0。我的节点版本是v12.18.3,但是在进行npm安装时,我在Linux中收到此错误“ npm ERR!cb.apply不是函数”。如何解决此问题?
解决方法
如果共享的是Windows或Linux,则将很有帮助,但该错误似乎发生在Windows上。 Possible solution:
gulpfile.js
之后,npm install应该可以正常工作。
编辑,好吧,我看到它是Linux,因此我可以尝试使用1. Go to C:\Users(your username)\AppData\Roaming
2. Delete the npm folder (possibly back it up) and if there is one npm cache folder.
3. Run npm clean cache —force ( — force is now required to clean cache)
来尝试npm cache clean
Mac/Macbook 用户
由于这个问题相当活跃,并且是这个问题的顶级谷歌结果(我知道 OP 使用的是 Linux),因此我们在此列表中涵盖了所有其他操作系统。这是在 Mac 上修复它的方法。
在 Mac 上,您没有 AppData\Roaming
文件夹,因此只需运行 npm root -g
,然后导航到隐藏目录并删除那里的 node_modules
。如果使用 nvm
,您需要重新运行 nvm use x.x.x
(其中 x.x.x
是您的版本)。
Windows 解决方案:
就我而言,我不想删除“C:/users/me/AppData/Roaming/”中的所有 npm 目录,因为我有许多已经存在并安装的全局模块。
上面@user14360499 的启发是什么:
- 进入“C:\Users\me\AppData\Roaming\npm\node_modules”
- 删除“npm”目录
-
npm install
我的项目,照常工作
就我而言,它确实是 graceful-fs
包。运行
npm i -g --force graceful-fs
解决了这个问题。我之前也运行过 nodist npm {scope} match
,但不确定是否有必要。
Ubuntu 18.04解决方案=>
- 访问“ usr / lib / node_modules”。
- 删除“ n”,“ npm”,“ npm-clean”,“ npm-install-peers”。这意味着删除所有与节点和npm相关的文件夹。
- 再次安装npm。
我从不同的帖子和谷歌页面尝试了很多解决方案,但对我没有任何效果。
我最终清理了 node、nodejs 和 npm 的所有痕迹。清除调用后可能需要一些手动强制移除。然后使用 nvm 安装。
它为我解决了这个问题。它获得了 nodejs v 15.4.0 和 npm 7.0.15 的兼容版本(在使用 apt-get 之前,它正在安装 npm 6.9.0)
,对我来说,解决方案是删除项目的节点模块和凉亭组件文件夹。
,就我而言(Mac),这是因为我在 npx
旁边安装了 n
(替代 nvm
)。
$ which npx
/usr/local/bin/npx
我删除了这个可执行文件,现在:
$ which npx
/Users/MY_USER/n/bin/npx
现在可以使用了。
,在 macOS BigSur 上,我在执行时遇到了这个问题:
npx install-peerdeps --dev eslint-config-airbnb
为了修复,我跑了
brew update
之后我被提示运行
brew upgrade
运行这两个命令解决了这个问题。
,对于 linux 用户:
- 卸载 NPM,要执行此操作,请转到 /usr/local/lib/node_modules 并执行以下操作:
sudo rm -r n npm npx
- 卸载后,重新安装:
npm 安装
- 即使在执行此操作后,在特定项目中尝试安装特定 npm 包时,您也可能会出现以下错误:
bash: /usr/local/bin/npm: 没有那个文件或目录
如果是这样,请在终端中运行:
hash -r
- 现在您可以重新尝试安装您想要的 npm 包。
2021 年 2 月修复:
npm install
然后将更改提交到 package-lock.json
。这应该会更新您的所有依赖项,从而解决此问题。
更多信息:https://help.heroku.com/ZV7S7D6T/why-is-my-node-build-is-suddenly-displaying-npm-err-cb-apply-is-not-a-function(这发生在我在 heroku 上)
,我在尝试运行 npx
时遇到了这个问题。
我发现 nvm
已从 PATH 中删除。
我将它重新添加到我的 .zshrc 文件中并且它起作用了。
,ubuntu 18.04 解决方案
sudo apt-get remove nodejs
sudo apt-get remove npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/bin/npm
sudo apt-get install nodejs
sudo apt-get install npm
并尝试 node 和 npm 版本
node -v
npm -v
如果安装后提示没有这样的node/npm,则
sudo ln -s /usr/bin/node /usr/local/bin/node
sudo ln -s /usr/bin/npm /usr/local/bin/npm
试试这个命令是否有效
npm -v
node -v
如果你想更新 npm/node 稳定版本
sudo npm install n -g
sudo n stable
,
我在Nodist上遇到了同样的问题。更改Node版本后,我的npm版本实际上与它不兼容。因此,如果您使用的是Nodist,请确保在切换Node版本(范围为全局,本地或环境)后运行nodist npm {scope} match
。
通过将节点更新为最新版本,此问题已为我解决。我读过here,这是由节点版本冲突引起的。 NVM是管理节点版本的好软件包。希望对您有所帮助;)
,ubuntu解决方案=>
- 从系统中完全删除nodejs和npm。
sudo apt-get remove nodejs
sudo apt-get remove npm
- 从此参考(https://computingforgeeks.com/install-node-js-14-on-ubuntu-debian-linux/)安装节点-这将反过来安装最新的npm。
请注意,此问题可能与graceful-fs
软件包有关。您可以尝试重新安装它:
npm install graceful-fs --save-dev
,
同样的错误只是在错误的文件夹中 -.-(不是打字稿项目)