'Why does 'npm doctor' produce permission errors?

When I run npm doctor I get permission errors that I have not seen before:

Perms check on local bin folder     not ok  Check the permissions of files in /Users/Orome/node_modules/.bin
Perms check on global bin folder    not ok  Check the permissions of files in /usr/local/bin

I've made no changes that I'm aware of that would have caused this change.

What is causing this and what can I do about it?


Full output of npm doctor:

npm WARN checkFilesPermission error getting info for /Users/Orome/node_modules/.bin
npm ERR! checkFilesPermission Missing permissions on /usr/local/bin/.keepme (expect: executable)
Check                               Value   Recommendation/Notes
npm ping                            ok
npm -v                              ok      current: v7.0.10, latest: v6.14.8
node -v                             ok      current: v15.2.0, recommended: v15.2.0
npm config get registry             ok      using default registry (https://registry.npmjs.org/)
which git                           ok      /usr/local/bin/git
Perms check on cached files         ok
Perms check on local node_modules   ok
Perms check on global node_modules  ok
Perms check on local bin folder     not ok  Check the permissions of files in /Users/Orome/node_modules/.bin
Perms check on global bin folder    not ok  Check the permissions of files in /usr/local/bin
Verify cache contents               ok      verified 9656 tarballs

npm ERR! Some problems found. See above for recommendations.

Config:

macOS: 10.15.7-x86_64
CPU: quad-core 64-bit haswell
HOMEBREW_VERSION: 2.5.9-52-g8cffae8
HOMEBREW_PREFIX: /usr/local
Clang: 12.0 build 1200
Java: 1.8.0_172
CLT: 12.1.0.0.1.1602137645
Xcode: 12.1
npm


Solution 1:[1]

It seems that Homebrew and node can get out of sync and produce this error as a result. In any case simply

npm install -g npm

might take care of it.

If that fails, confirm that .keepme is empt and try

rm -rf /usr/local/bin/.keepme

Solution 2:[2]

In my case, after updating npm, I found that the .bin directory does not exist. You just need to create: mkdir /Users/<username>/node_modules/.bin

Solution 3:[3]

Perms check on global bin folder: npm doctor is missing executable on /usr/local/bin/.keepme file

This solves the problem in my case:

chmod +x /usr/local/bin/.keepme

Perms check on local bin folder: the node_modules/.bin folder is missing from the command execution location, you can create it manually or command:

mkdir node_modules && cd node_modules && mkdir .bin

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Mandrichenko
Solution 3 szeveba