NPM不能安装依赖关系 – 试图解锁没有被locking的东西

我一直试图在我的package.json文件上运行npm install,但是我遇到了很多麻烦。 在我所有的依赖中,它总是说“错误:尝试解锁尚未被locking的XXX”。 这是其中之一:

Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11) at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5) at /usr/local/lib/node_modules/npm/lib/cache.js:655:20 at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7 at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38 at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5) at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22) at Object.oncomplete (fs.js:107:15) 

如果我试图以sudo的方式运行它,似乎进一步,并开始安装一些包,但一些新的错误popup,而不是:

 > chokidar@0.8.1 postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar > node setup-deps.js shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied node.js:811 var cwd = process.cwd(); ^ Error: EACCES, permission denied at Function.startup.resolveArgv0 (node.js:811:23) at startup (node.js:58:13) at node.js:902:3 npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' npm ERR! error rolling back karma@0.10.9 { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'] npm ERR! error rolling back errno: 53, npm ERR! error rolling back code: 'ENOTEMPTY', npm ERR! error rolling back path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' } npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js' 

我最近更新了我的节点和npm安装。 所以也许这与它有关。 此外,我的大部分开发工作都在办公室,而今天我正在通过VPN进行工作,所以也许这也与它有关。

有任何想法吗?

根据photusenigma在: https : //github.com/npm/npm/issues/4815

在terminal窗口中运行这些命令(注意 – 不要replace$ USER部分…这是一个Linux命令让你的用户!):

 sudo chown -R $USER ~/.npm sudo chown -R $USER /usr/local/lib/node_modules 

…和…如果你在Mac上(像我一样),运行这些命令后仍然看到错误,然后运行这最后一个,你应该是好的。 (build议你在做这个之前先testing一下,我不喜欢改变整个/ usr / local目录的权限,除非真的有必要!)

 sudo chown -R $USER /usr/local 

我今天下午和同事一起工作,找出问题所在。 我的主目录中的“.npm”文件夹由root用户拥有,而不是我自己。 我不确定发生了什么事情。 也许我安装节点或NPM作为根pipe理员在一个点上。 无论如何,我只是运行sudo chown -R [username] .npm ,我终于可以从我的项目再次运行npm install命令!

在我的情况下,问题是调用npm用户没有一个HOME目录,所以例如下面的命令将失败:

 sudo -u someUser npm install 

解决scheme是提供一个HOME目录,其中someUser具有写权限:

 sudo -u someUser HOME=/some/directory npm install 

有同样的问题,并通过更改所承认的答案来解决问题:

 sudo chown -R $USER ~/.npm 

但是,应该避免使用第二个命令,因为它会降级系统资源( sudo chown -R $USER /usr/local/lib/node_modules )的sudo chown -R $USER /usr/local/lib/node_modules 。 不是一个好主意。

logging: /usr/local “usr”代表Unix系统资源

这一切都为我工作。 我必须按照以下方式从根本上运行:

 sudo su - sudo npm install forever -g 

然后在Linux Ubuntu 14.04上安装这个软件包。

以下命令应修复权限问题:

 sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} 

你可以在这里阅读另一个正式推荐的解决scheme

https://docs.npmjs.com/getting-started/fixing-npm-permissions

我的解决scheme

 sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE 

在我的情况是:

 sudo chown -R $USER /usr/local/lib/node_modules/appium/ 

但是我最终遇到了同样的问题

 npm cache clean 

有效 !

我有同样的问题,并试图修复npm相关的文件和目录的权限/所有权几个小时,但没有运气。

突然间,我发现我的~/.npmrc文件的cache项指向一个不存在的目录。 删除该cache属性以使用默认的caching位置,现在解决了。

放弃

我是一个Windows用户。 然而,我和我的团队遇到了一些关于npm安装错误的问题。

问题

以下是一系列经验教训和可能的激进解决scheme,

  1. node_modulesnpm本地安装目录因操作系统的缺陷而受到保护,例如无法处理超过255个字符的path。
  2. 如果通过命令行工具擦除文件夹,则文件夹仍然可能会出现,如果该文件夹存在于资源pipe理器中,则在尝试访问该文件夹时会出现许多权限错误。
  3. 根据您的防病毒和/或本地策略pipe理器的不同,您可能可以创buildnode_modules文件夹,然后将其访问或权限降级,从而导致大量安装错误。
  4. 启用npm日志以进一步了解可能的问题:

    npm install --loglevel verbose

激进

全球安装rimraf

  npm install rimraf -g 

在node_modules上运行rimraf

 rimraf yourDir/node_modules 

然后尝试运行:

 npm install 

警告!

或缺乏。 要非常小心遵循命令rimraf 。 没有警告,没有提示,没有什么。 它只是从地球清洁的阶段擦除目录,就好像它从来没有。 请自行承担风险。