npm 错误!cb.apply 不是函数

Jan*_*aki 54 node.js npm npm-install

尽管我的 npm 版本是 6.9.0,但我在 Linux 中执行 npm install 时收到此错误“npm ERR!cb.apply 不是函数”。我的节点版本是 v12.18.3。如何解决这个问题?

Mar*_*ski 86

如果您在 Windows 或 Linux 上共享会有所帮助,但错误似乎发生在 Windows 上。可能的解决方案

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 cache clear --force` (--force is now required to clean cache)
Run Code Online (Sandbox Code Playgroud)

之后,npm install应该可以正常工作。

  • 在我的 Windows 计算机上,它是“npm 缓存清理”(而不是“npm clean 缓存”)。 (8认同)
  • 这解决了我的问题。谢谢! (4认同)
  • 是的,这个方法是正确的,但在最后一步你可以运行“npm cache clean --force”来清理你的缓存。并运行“npm cache verify”来验证您是否成功完成了任务。 (3认同)

jac*_*kim 16

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
Run Code Online (Sandbox Code Playgroud)

然后尝试node和npm版本:

node -v
npm -v
Run Code Online (Sandbox Code Playgroud)

如果安装后提示没有这样的node/npm,那么:

sudo ln -s /usr/bin/node /usr/local/bin/node
sudo ln -s /usr/bin/npm /usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)

如果命令有效,请尝试以下操作:

npm -v
node -v
Run Code Online (Sandbox Code Playgroud)

如果您想更新 npm/node 稳定版本:

sudo npm install n -g
sudo n stable
Run Code Online (Sandbox Code Playgroud)


max*_*uty 15

Mac/Macbook 用户

由于这个问题相当活跃,并且是这个问题的顶级谷歌结果(我知道 OP 正在使用 Linux),并且我们在此列表中涵盖了所有其他操作系统。这是在 Mac 上修复它的方法。

在 Mac 上,您没有该AppData\Roaming文件夹,因此只需运行npm root -g然后导航到隐藏目录并删除node_modules那里。如果使用,nvm您需要重新运行nvm use x.x.xx.x.x您的版本在哪里)。

  • 谢谢。我的问题是我需要运行“nvm use xxx” (6认同)
  • 我的隐藏目录中只有一个 dtrace 文件夹。没有节点模块 (2认同)

adi*_*gil 10

Windows 解决方案:

就我而言,我不想删除“C:/users/me/AppData/Roaming/”中的所有 npm 目录,因为我有许多已经存在并安装的全局模块。

上面@user14360499 的启发是什么:

  1. 进入“C:\Users\me\AppData\Roaming\npm\node_modules”
  2. 删除“npm”目录
  3. npm install 我的项目,并像往常一样继续工作


Chr*_*nie 9

我对 Nodist 也有同样的问题。更改 Node 版本后,我的 npm 版本实际上与其不兼容。因此,如果您使用Nodist,请确保在切换Node版本后运行nodist npm {scope} match,其中作用域是全局、本地或env。


Grz*_*ski 9

对我来说,在 Centos 7 上,它是关于删除graceful-ts本地使用的npx. 首先,我必须打开错误消息中提到的日志文件:

npm ERR! cb.apply is not a function

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-04-04T07_45_27_182Z-debug.log
Run Code Online (Sandbox Code Playgroud)

在该日志文件中有这样的路径:

verbose stack     at /usr/local/lib/node_modules/npx/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
Run Code Online (Sandbox Code Playgroud)

所以我删除了整个graceful-fs目录并再次运行 npx 。一切顺利。

rm -fR /usr/local/lib/node_modules/npx/node_modules/npm/node_modules/graceful-fs
Run Code Online (Sandbox Code Playgroud)


小智 6

当我尝试使用 npx 时,出现了同样的错误(macOS Big Sur) 。

当我运行时我如何修复它(使用 nvm) :

nvm ls
Run Code Online (Sandbox Code Playgroud)

nvm ls 输出

使固定:

nvm alias default node
nvm install 'lts/*'
Run Code Online (Sandbox Code Playgroud)

nvm 安装输出