我一直在尝试在我的package.json文件上运行npm install,但是我遇到了很多麻烦。它一直说“错误:尝试解锁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,所以也许这与它有关。
有什么想法吗?
答案 0 :(得分:421)
根据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(就像我一样),并且在运行这些命令后仍然看到错误,那么运行最后一个命令就应该很好。 (建议您在执行此操作之前先尝试测试。我不想更改ENTIRE / usr / local目录的权限,除非真的有必要!)
sudo chown -R $USER /usr/local
答案 1 :(得分:152)
今天下午我和一位同事一起工作,并找出了问题所在。我的主目录中的“.npm”文件夹由root用户而不是我自己拥有。我不确定是什么原因引起的。也许我一度安装了node或npm作为root管理员。在任何情况下,我只是运行sudo chown -R [username] .npm
,我终于能够再次从我的项目中运行npm install
命令!
答案 2 :(得分:21)
在我的情况下,问题是使用没有HOME目录的用户调用npm,因此例如以下命令将失败:
sudo -u someUser npm install
解决方案是提供一个HOME目录,其中someUser
具有写访问权限:
sudo -u someUser HOME=/some/directory npm install
答案 3 :(得分:11)
有同样的问题并通过根据接受的答案更改持久性来修复它:
sudo chown -R $USER ~/.npm
但是,应该避免使用第二个命令,因为它降低了系统资源(sudo chown -R $USER /usr/local/lib/node_modules
)的权限。不是个好主意。
记录:" usr"在/usr/local
中代表 Unix系统资源。
答案 4 :(得分:4)
这些都不适合我。通过执行以下操作,我必须以root身份运行:
sudo su -
sudo npm install forever -g
然后在Linux Ubuntu 14.04上安装该软件包。
答案 5 :(得分:2)
以下命令应修复权限问题:
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
您可以在此处阅读其他官方推荐的解决方案:
https://docs.npmjs.com/getting-started/fixing-npm-permissions
答案 6 :(得分:1)
我的解决方案:
sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE
在我的案例中,是:
sudo chown -R $USER /usr/local/lib/node_modules/appium/
但是我最终遇到了同样的问题
npm cache clean
有效!
答案 7 :(得分:0)
我遇到了同样的问题并试图修复npm相关文件和目录的权限/所有权数小时但是没有运气。
突然间,我发现我的~/.npmrc
文件的cache
条目指向一个不存在的目录。删除了cache
属性以使用默认缓存位置,现在它已解决。
答案 8 :(得分:0)
<强>声明强>
我是 Windows 用户。但是,我和我的团队遇到了很多关于npm安装错误的问题。
问题
以下是经验教训清单以及一直拯救我们的可能的根本解决方案:
启用npm日志以进一步了解可能出现的问题:
npm install --loglevel verbose
<强>自由基强>
全球安装rimraf
npm install rimraf -g
在 node_modules 上运行rimraf:
rimraf yourDir/node_modules
然后尝试运行:
npm install
警告!强>
或缺乏。对命令rimraf
后面的内容要格外小心。没有警告,没有提示,没有任何东西。它只是从地球清洁阶段清除目录,就像它从未出现过一样。请自行承担风险。