NPM不能安装依赖 - 尝试解锁的东西还没有被锁定NPM不能安装依赖 - 尝试解锁的东西还没有被锁定

2019-05-12 17:24发布

我一直在试图运行NPM安装在我的package.json文件,但我有很多的麻烦。 它口口声声说“错误:尝试解锁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的,它似乎进一步得到并开始安装一些软件包,但一些新的错误,而不是弹出:

> 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,所以也许这有什么用它做了。

有任何想法吗?

Answer 1:

按photusenigma于: https://github.com/npm/npm/issues/4815

在终端窗口中运行以下命令(注意 - 不要更换$ USER一部分......那是一个linux命令,获取用户!):

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

......然后......如果你是在Mac上(像我),仍然可以看到运行这些命令后的错误,然后运行这最后一个,你应该是不错的。 (建议您尝试测试你这样做的人之前,我不喜欢改变对整个的/ usr / local目录的权限,除非确实必要!)

sudo chown -R $USER /usr/local


Answer 2:

我有一个同事今天下午的工作,并计算出了什么问题。 在我的主目录我的“.npm”文件夹是由root用户,而不是自己拥有。 我不知道发生了什么事导致这一点。 也许我安装的节点或NPM作为根admin在一个点上。 在任何情况下,我只是跑sudo chown -R [username] .npm ,我终于能够运行npm install从我的项目再次命令!



Answer 3:

在我的情况下,问题是调用NPM与不具有主目录,因此,例如下面的命令将失败用户:

sudo -u someUser npm install

解决的办法是提供一个HOME目录,其中someUser有写权限:

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


Answer 4:

有同样的问题,并通过改变persmissions按照接受的答案固定它:

sudo chown -R $USER ~/.npm

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

备案:在“USR” /usr/local代表的Unix系统资源



Answer 5:

这一切都不为我工作。 我不得不通过执行以下操作以root身份运行字面上:

sudo su -
sudo npm install forever -g

然后包上安装Linux操作系统Ubuntu 14.04。



Answer 6:

下面的命令应该可以解决权限问题:

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

你可以阅读这里的另一个正式推荐的解决方案:

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



Answer 7:

我的解决方案:

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

在我的情况是:

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

但我得到了同样的问题,最后经过

npm cache clean

有效 !



Answer 8:

我有同样的问题,并试图解决的NPM相关的文件目录小时权限/所有权,但有与没有运气。

突然,我发现我不得不~/.npmrc与文件cache项指向一个不存在的目录。 移除cache使用默认的缓存位置财产,现在它的解决。



Answer 9:

放弃

我是一个Windows用户。 然而,我的团队和我所遇到的一些关于NPM installaion错误的问题。

问题

以下是总结经验教训清单,并可能彻底的解决方案,一直救了我们:

  1. node_modules,所述NPM本地安装的目录变得从修改由OS的缺点,如不能处理超过255个字符的路径保护。
  2. 如果该文件夹是一个命令行工具仍可能出现,如果在浏览器中,试图访问它时,给出了一些权限错误的文件夹存在的部件删除。
  3. 根据您的防病毒软件和/或本地策略管理器您可以创建文件夹node_modules,后来降级或访问权限,它产生了许多的安装错误。
  4. 启用NPM日志以获得更进一步的认识与可能出现的问题:

    npm install --loglevel verbose

安装rimraf全球

 npm install rimraf -g

node_modules运行rimraf:

rimraf yourDir/node_modules

然后,尝试运行:

npm install

警告!

或者缺乏那里。 要格外小心什么如下命令rimraf 。 没有警告,没有提示,没有什么。 它只是删除从地上干净的阶段目录,就好像它从来没有在那里。 试试在你自己的风险。



文章来源: NPM cannot install dependencies - Attempt to unlock something which hasn't been locked