NPM "ENOENT: no such file or directory error" when installing Sails.js dependencies with Node 8.9.4 LTS

node.jsNpmsails.js

node.js Problem Overview


I recently upgraded my computer and with it, to the latest LTS version of Node and NPM:

  • Node.js 8.9.4
  • NPM 5.6.0

I have a Sails.js 0.12.14 application for which I'm trying to install NPM dependencies with npm install but when I do that, I get the following errors:

➜  web-service git:(feature/auth) ✗ npm install
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/pako-660dbb41/package.json'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/pako-660dbb41/README.md'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/pako-660dbb41/LICENSE'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/pako-660dbb41/index.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/pako-660dbb41/CHANGELOG.md'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/camelCase.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/uniqueId.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/bindKey.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/unnest.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/bindAll.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/unset.js'
// a bunch of similar Lodash errors removed from here
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/T.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/zipWith.js'
WARN tar ENOENT: no such file or directory, open '/Users/Nag/Code/project/web-service/node_modules/.staging/lodash-6e6c9f2a/fp/lastIndexOfFrom.js'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: oauth-sign@0.8.2 (node_modules/oauth-sign):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: Cannot cd into '/Users/Nag/Code/project/web-service/node_modules/.staging/oauth-sign-b13c86db'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: mkdirp@0.5.1 (node_modules/mkdirp):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: Cannot cd into '/Users/Nag/Code/project/web-service/node_modules/.staging/mkdirp-c94c8047'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimist@0.0.8 (node_modules/mkdirp/node_modules/minimist):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: Cannot cd into '/Users/Nag/Code/project/web-service/node_modules/.staging/minimist-ba966a6e'

npm ERR! path /Users/Nag/Code/project/web-service/node_modules/.staging/sails-02afd14e/node_modules/@sailshq/body-parser
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/Users/Nag/Code/project/web-service/node_modules/.staging/sails-02afd14e/node_modules/@sailshq/body-parser' -> '/Users/Nag/Code/project/web-service/node_modules/.staging/@sailshq/body-parser-6d1e8405'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/Nag/.npm/_logs/2018-01-22T14_40_13_889Z-debug.log

I can't seem to figure out what's going on and can't find suitable answers anywhere else online. I even ran npm cache clean --force, rm -rf node_modules and retried with similar errors. It seemed to work fine when I was on Node ~6 but after upgrading to Node 8.9.4 and NPM 5.6.0, it just won't install my dependencies. How can I resolve this?

node.js Solutions


Solution 1 - node.js

Try deleting the package-lock.json file.

Solution 2 - node.js

For me, it turned out these errors were hiding the real underlying problem, which was that my credentials for a third-party npm repository (azure devops) had expired. I had to re-run vsts-npm-auth -config .npmrc to update the token in my .npmrc file.

Solution 3 - node.js

No permission, no internet issue, it's just a general issue of npm. I solved the problem with yarn.

yarn install

Or you can use no-optional flag.

npm install --no-optional

Solution 4 - node.js

In my case, I tried deleting package-lock.json, clearing and verifing the npm cache, removing node_modules, even stopping the antivirus (W10 machine) and was still getting this error.

I somehow fixed it by running npm update before npm install, which creates a new package-lock.json:

del /f package-lock.json
rd /s /q node_modules
npm cache clean
npm cache verify
npm update
npm install

Solution 5 - node.js

Deleting and regenerating 'package-lock.json' usually solves this issue however that's inherently risky because you will likely be upgrading multiple packages at a time.

In my case it turned out that there was one specific package version that package-lock.json was referencing, that was 5 levels deep in the dependency. That version no longer existed at the npm registry so it caused the install to break. I had to find which package was pulling in this dependency and upgrade that one to resolve the issue.

Solution 6 - node.js

It may be a problem with the cache, try to verify the cache.

npm cache verify

Solution 7 - node.js

Just delete package-lock.json file and then install package(s) you want. All will work.

Solution 8 - node.js

  • Delete node_modules

  • Just delete package-lock.json file and then install packages you want with npm install . All will work.

    rm -rf node_modules

    rm package-lock.json

    npm install

  • If the issue still persists check if you have a global version of any of the packages installed. This can happen if you have a global version of a package that clashes with a local version of a package.

Solution 9 - node.js

I was struggling with this for awhile, and it seems be be related to the following.

Let's say you have 3 modules, A, B and C

Module A includes B and C directly Module B also includes module C, in it's package.json dependencies.

If your package.json dependencies in module A look like the following:

"dependencies": {
     "C": "^1.0.0",
     "B": "^1.1.0"
}

You will get the above error you mentioned, ENOENT, blah, blah in .staging

If on the other hand you include the module with the nested include first like:

"dependencies": {
     "B": "^1.1.0",
     "C": "^1.0.0"
}

The error goes away. This seems like a bug in npm with nested dependencies, and the error messages and logs were not very descriptive. Check your dependency tree and see if you have the described case, if so, that is your issue.

Solution 10 - node.js

Beside removing package-lock.json I had to remove node_modules so package-lock.json could be generated in the right way

rm -rf node_modules
rm package-lock.json
npm i

Solution 11 - node.js

I have presented this same error due to npm cache problems. Run

npm install --cache /tmp/empty-cache

Solution 12 - node.js

If you dont have package-lock.json or package.json under your working folder, call npm init first.

Solution 13 - node.js

This happened to me when I was on Node.js 12 attempting to run npm install against a package-lock.json generated using Node.js 16.

Switching back to Node.js 16 resolved the issue:

nvm use 16

Of course, deleting the package-lock.json would have also resolved the issue for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJackHView Question on Stackoverflow
Solution 1 - node.jstantalumView Answer on Stackoverflow
Solution 2 - node.jsStriplingWarriorView Answer on Stackoverflow
Solution 3 - node.jscoturivView Answer on Stackoverflow
Solution 4 - node.jsmenrodriguezView Answer on Stackoverflow
Solution 5 - node.jsjspruView Answer on Stackoverflow
Solution 6 - node.jsHill WongView Answer on Stackoverflow
Solution 7 - node.jsNeha SharmaView Answer on Stackoverflow
Solution 8 - node.jsTejas SavaliyaView Answer on Stackoverflow
Solution 9 - node.jsSeverunView Answer on Stackoverflow
Solution 10 - node.jsŽeljko ŠevićView Answer on Stackoverflow
Solution 11 - node.jsmemartinez06View Answer on Stackoverflow
Solution 12 - node.js王大拿View Answer on Stackoverflow
Solution 13 - node.jsJoshuaCWebDeveloperView Answer on Stackoverflow