apm upgrade: Failed to change folder ownership under npm cache

If you meet errors similar to the following one while upgrading [apm] packages via command line:

npm ERR! Failed to change folder ownership under npm cache for %s /Users/Chris/.atom/.node-gyp/.atom/.apm/_git-remotes/https-github-com-Glavin001-Coffee-Formatter-git-41cd2663
npm ERR! Error: ENOENT, readdir '/Users/Chris/.atom/.node-gyp/.atom/.apm/_git-remotes/https-github-com-Glavin001-Coffee-Formatter-git-41cd2663/description'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

Its mostly just because of there are not just one versions of node-gyp under ~/.atom/.node-gyp.

In my case, there were 3 versions:

ls ~/.atom/.node-gyp/.node-gyp
0.11.10 0.11.13 0.17.0

The way to fix this issue is very simple, just run the following command to force [Atom] to recreate .node-gyp folder:

rm -dr ~/.atom/.node-gyp

Now, apm upgrade works again.

[Atom]: https://atom.io/
[apm]: https://github.com/atom/apm

 
16
Kudos
 
16
Kudos

Now read this

Function direct call vs func.call() vs func.bind() in JavaScript

JavaScript 有三种函数调用方式 (其他奇葩的不讨论) : func() func.call() 和 func.apply() var binded = func.bind() 第一种很好理解,就是直接调用。 第二种很常用,经常用于调整函数的 this 指向的对象。如: function say_hello () { return 'Hello, ' + this.name } say_hello.call({ name: 'John' }) //... Continue →