Application 不是一个函数

我得到了这个错误

npm ERR! cb.apply is not a function

虽然我的 npm 版本是6.9。我的节点版本是 v12.18.3。如何解决这个问题?

100771 次浏览

Would be helpful if you shared if it's Windows or Linux, but the error seems to occur on Windows. Possible solution:

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)

After that, npm install should work fine.

Ciao, this problem could be connected to graceful-fs package. You could try to reinstall it:

npm install graceful-fs --save-dev

Solution for Ubuntu 18.04=>

  1. Visit 'usr/lib/node_modules'.
  2. Delete 'n', 'npm','npm-clean','npm-install-peers'. That means delete all the node & npm related folders.
  3. Install the npm again.

Solution for ubuntu =>

  1. Completely remove nodejs and npm from your system.
sudo apt-get remove nodejs
sudo apt-get remove npm
  1. Install node from this reference (https://computingforgeeks.com/install-node-js-14-on-ubuntu-debian-linux/) - This will inturn install latest npm .

I had the same issue with Nodist. After changing my Node version, my npm version was actually incompatible with it. So if you're using Nodist, make sure to run nodist npm {scope} match after switching Node versions, where scope is either global, local or env.

I have tried a lot of solutions from different posts and google pages and nothing worked for me.

I ended up cleaning all traces of node, nodejs, and npm. May need some manual force remove after the purge call. And then installed using nvm.

https://linuxize.com/post/how-to-install-node-js-on-ubuntu-20-04/#installing-nodejs-and-npm-using-nvm

And it resolved the issue for me. It got the nodejs v 15.4.0 and the compatible version of npm 7.0.15 ( before using apt-get it was installing npm 6.9.0)

In my case it was indeed the graceful-fs package. Running

npm i -g --force graceful-fs

fixed the issue. I also ran nodist npm {scope} match before but I'm unsure if it was neccessary.

Solution for 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

Then try node and npm version:

node -v
npm -v

If it says there is no such node/npm after you already install, then:

sudo ln -s /usr/bin/node /usr/local/bin/node
sudo ln -s /usr/bin/npm /usr/local/bin/npm

Try this if the command works:

npm -v
node -v

In case when you want to update npm/node stable version:

sudo npm install n -g
sudo n stable

Solution for Windows:

In my case I didn't want to delete all the npm directory inside C:/users/me/AppData/Roaming/ because I had many global modules that already existed and installed.

What worked was inspired by @user14360499's answer:

  1. go inside C:\Users\me\AppData\Roaming\npm\node_modules
  2. delete the npm dir
  3. npm install my project, and keep working as usually

Mac/Macbook users

Since this question is fairly active and a top google result for this issue (I know the OP is using Linux), here is how to fix it on a Mac.

On a Mac you do not have the AppData\Roaming folder, so simply run npm root -g and then navigate to the hidden directory and delete the node_modules there. If using nvm you'll need to rerun nvm use x.x.x (where x.x.x is your version).

I had this problem while trying to run npx.

I found that nvm had been removed from the PATH.

I added it back to my .zshrc file and it worked.

Feb 2021 fix:

npm install

And then commit the changes to package-lock.json. That should update all your dependencies, thus fixing this issue.

More info: https://help.heroku.com/ZV7S7D6T/why-is-my-node-build-is-suddenly-displaying-npm-err-cb-apply-is-not-a-function (this happened to me on heroku)

For linux users:

  1. uninstall NPM, to do it go to /usr/local/lib/node_modules and do:

sudo rm -r n npm npx

  1. Once uninstalled, re-instal it:

npm install

  1. Even after doing this, in a specific project when trying to install a specific npm package, you may get the following error:

bash: /usr/local/bin/npm: No such file or directory

If so, in the terminal just run:

hash -r

  1. Now you can retry installation of your wanted npm package.

On macOS BigSur, I had this problem when executing:

npx install-peerdeps --dev eslint-config-airbnb

To fix, I ran

brew update

after which I was prompted to run

brew upgrade

Running the two commands fixed the issue.

In my case (Mac) it was because I had npx installed alongside n (alternative to nvm).

$ which npx
/usr/local/bin/npx

I removed this exectutable and now:

$ which npx
/Users/MY_USER/n/bin/npx

and it works now.

Had the same error was simply in the wrong folder -.- (not a typescript project)

For me , the solution was to delete the node modules and bower components folder of the project.

Had the same error (macOS Big Sur) when i tried to use npx.

How i fixed it (using nvm) when i run:

nvm ls

nvm ls output

Fix:

nvm alias default node
nvm install 'lts/*'

nvm install output

for the mac OS remove the node version and reinstalling was work for me. I used n npm version manager.

On windows, using nvm, i just installed a newer nodejs version (before 14.17.0, now 14.18.2)

So many solutions just made me even more puzzled. I downloaded and installed the newest LTS NodeJS and it worked just fine. https://nodejs.org/en/

I was getting this error when running npx sb init. For some reason, the command worked localy but not in CI. I tried most of the solutions from here. But only the following worked.

I replaced npx sb init with yarn global add @storybook/cli && yarn exec sb init as suggested here: https://github.com/yarnpkg/yarn/issues/3937#issuecomment-751289438

(NVM, Node.js 14, Yarn 1)

For me, on Centos 7, it was about removing graceful-ts used locally by npx. First, I've had to open log file which was mentioned in the error message:

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

In that log file there was this path:

verbose stack     at /usr/local/lib/node_modules/npx/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18

So I removed whole graceful-fs directory and ran npx again. Everything worked.

rm -fR /usr/local/lib/node_modules/npx/node_modules/npm/node_modules/graceful-fs

if you are also getting this error:

1 warn npm npm does not support Node.js v16.2.0

that means that your npm version is not correct.

reinstall npm, try again.

It works for me.

I'm on a Mac, and had exactly the same issue. Deleting the node modules seemed a little overkill for me, so I ran npm update and it solved the issue! Please note I did not yet have any package.json or any modules on the repo I was working in.