Error: EPERM: operation not permitted, unlink '

2020-01-30 08:00发布

问题:

I just updated npm to 5.4.0.
Now, Whenever I want install a npm package I get the following error:

D:\Sources\DownloadCms\Md.Download\Web.Angular>npm install mds.angular.datetimepicker@latest --save
npm ERR! path D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.json
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.json'
npm ERR!     at Error (native)
npm ERR!  { Error: EPERM: operation not permitted, unlink 'D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.jso
n'
npm ERR!     at Error (native)
npm ERR!   stack: 'Error: EPERM: operation not permitted, unlink \'D:\\Sources\\DownloadCms\\Md.Download\\Web.Angular\\node_modules\\fsevents\\node_modules\\ab
brev\\package.json\'\n    at Error (native)',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'unlink',
npm ERR!   path: 'D:\\Sources\\DownloadCms\\Md.Download\\Web.Angular\\node_modules\\fsevents\\node_modules\\abbrev\\package.json' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Mohammad\AppData\Roaming\npm-cache\_logs\2017-09-03T03_25_50_432Z-debug.log

I'm dead sure, run CMD as administrator.

Also I checked D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.json\, package.json is not exist in path !

Edit: Upgrade to v5.4.1, still get the same error, even cannot work around with --no-optional :-(

回答1:

It is an npm 5.4.0 issue https://github.com/npm/npm/issues/18287

Workarounds are

  • downgrade to 5.3
  • try running with --no-optional, i.e. npm install --no-optional


回答2:

I was able to fix this by running the command prompt/bash as admin and closing VSCode! Seems like VSCode was locking some files. Potentially something else could be locking these files for you.



回答3:

If you downgrade to 5.3 and still get the same error in Windows like me.
After hours working with npm versions I found the following solution:

1. Download latest recommended version of nodejs, these days is node-v6.11.3-x64
2. Uninstall nodejs with it.
3. Go to C:\Users\{YourUsername}\AppData\Roaming folder and delete npm and npm-cache folders
4. Run installer of nodejs again and install it
5 Update npm to 5.3 with npm i -g npm@5.3 command line

Now you should use npm without any issues.



回答4:

I fixed by downgrading npm from 5.4.0 to version 5.3

npm i -g npm@5.3

I Hope this helps for you



回答5:

I tried this solution found at a How to fix Node.js blog

just use

npm cache clean

in windows if it refuses use

npm cache clean --force


回答6:

I had the same issue and all I needed to do was login to npm

npm login

or alternatively

npm add user // consult the documentation for the params  



回答7:

Please close all IDE like visual studio code. run npm install command through node.js command prompt. Enjoy !



回答8:

I had the same problem on Windows.

The source of the problem is simple, it is access permission on folders and files.

In your project folder, you need

  1. After cloning the project, change the properties of the folder and change the permissions of the user (give full access to the current user).
  2. Remove the read-only option from the project folder. (Steps 1 and 2 take a long time because they are replicated to the entire tree below).
  3. Inside the project folder, reinstall the node (npm install reinstall -g)
  4. Disable Antivirus. (optional)
  5. Disable Firewall. (optional)
  6. Restart PC.
  7. Clear the npm cache (npm clear)
  8. Install the dependencies of your project (npm install)

After that, error "Error: EPERM: operation not permitted, unlink" will no longer be displayed.

Remember to reactivate the firewall and antivirus if necessary.



回答9:

For me it worked in bash from git package try:

C:\Program Files\Git\bin\bash.exe

then:

npm install mds.angular.datetimepicker@latest


回答10:

There seems to be many solutions out there that worked with downgrading npm versions. For me, the solution was

npm install -force

I tried the downgrading of npm versions, modifying my npm prefix config to match the npm directory, and clearing cache. None of these worked, but apparently they worked for others, so it may be worth a shot.



回答11:

I had this logs in Windows. I did the following

  • Close Visual Studio Code
  • Run Command Line as admin


回答12:

the same error comes to me when i update the npm version to the latest 5.4 downgrade to the version 5.3.0 is useful.the error comes from the npm 5.4,you can check it in the issuses in npm 5.4
npm install npm@5.3 -g


回答13:

Fixed in NPM 5.6.0

Upgrade to NPM 5.6.0 solved problem for me.



回答14:

I wanted to run npm install from within my external hard drive as this is where i saved my code workspace. Windows 10 OS.

But I was getting the same error as the original post.None of the previous answers worked for me, I tried all of them:

  1. uninstalling nodejs then re-installing
  2. uninstalling nodejs then downgrading/installing a lower version of nodejs.
  3. npm install -force
  4. deleting the folders from C:\Users{YourUsername}\AppData\Roaming ... npm and npm-cache then re-installing.
  5. npm cache clean --force
  6. npm cache clean
  7. npm install --g or npm install --global

What worked for me was this:

  1. copy the folder from C:\Program Files\nodejs to D:\Program Files\nodejs
  2. Then go to Control Panel\System and Security\System
  3. Advanced System Settings
  4. Environment Variables
  5. System Variables
  6. Double click Path
  7. Add a new path
  8. D:\Program Files\nodejs
  9. Click ok
  10. restart PC.
  11. try npm install from within D: Drive


回答15:

For me on Windows the problem was too long path length. I moved the project to a smaller length path and it worked.



回答16:

If all of the above failed to work for you, you might want to

  • restart your system
  • run command prompt as admin
  • run the npm command


回答17:

In my case, the problem was that, I did not install typescript. Although I did install Node and Angular. To check if you have installed typescript or not

Run this command: tsc -v

If not, then to install typescript

Run this command: npm install -g typescript

And, finally to install required dependencies

Run this command: npm install

in the root folder of the project.

---- Hope this helps someone ----



回答18:

cache clean and npm update to latest with force work for me

npm cache clean --force

npm install -g npm@latest --force


回答19:

For windows,

  1. Download latest recommended version of nodejs, these days is node-v6.11.3-x64
  2. Uninstall nodejs with it.
  3. Go to C:\Users\{YourUsername}\AppData\Roaming folder and delete npm and npm-cache folders
  4. Run installer of nodejs again and install it
  5. By default npm 3.10.10 should be installed along with node-v6.11.3-x64.
  6. It worked for me with npm 3.10.10 but did not work with 5.3.X. Also it did not worked with higher versions of node (above node-v6.11.3-x64)


回答20:

npm cache verify solved my issue. I was doing: ng new my-app and I faced similar error

I have node version: 10.16.0
npm v 6.9.0



回答21:

My problem was executing the command (npm audit fix all). I solved it when closing VSCODE and re-executed the command without problems.



回答22:

Closing a Visual Studio code is helped me to resolve this issue.



回答23:

Deleting package-lock.json fixed it for me.



回答24:

I simply completely shutdown , NOT hibernated, my machine and restarted it. Ran the CMD as admin and used npm install command. It worked.



回答25:

After trying everything, including node/npm upgrade, cache cleaning and reverting code, nothing helped besides one simple thing: Turning OFF Windows 10's Real-time protection during the dev/build. Looks like latest updates made it super aggressive.



回答26:

In my case, i was facing similar issue while running multiple instance of 'npm install' on VM used for build(Windows)

Since it was a VM used only for build there was no other program locking the files. I tried disabling various antivirus settings which didn't worked. "npm cache clear" and "npm cache verify" worked but it was not a right solution for me as i cannot guess when somebody will trigger a build job from Jenkins for different release/environment leading to multiple instance of 'npm install' and hence i cannot add it to the build script nor i can go login to VM and clear/delete the cache folders manually every time.

Finally, after some research, I ended up running "npm install" with separate cache path for each job using following command:

npm install --cache path/to/some/folder

Since, all the jobs running at the same time now had a separate cache path rather than the common global path (Users/AppData/Roaming/), this issue got fixed as the jobs were no more trying to lock and access the same file, from the common npm cache.

Please note you can install a single package with a cache path as follows:

npm install packageName --cache path/to/some/folder

I was not able to find this way of giving a cache path in npm documentation but i gave it a try and it worked. I am using npm6 and looks like it works since npm5.

[Refer: How to specify cache folder in npm5 on install command?

This solution should work for other scenarios as well though may or may not be a good fit.



回答27:

npm login is required before publish