首页 文章

NPM无法安装依赖项 - 尝试解锁尚未锁定的内容

提问于
浏览
191

我一直在尝试在我的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,所以也许这与它有关 .

有任何想法吗?

9 回答

  • 2

    根据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
    
  • 0

    我今天下午和同事一起工作,弄清楚问题是什么 . 我的主目录中的".npm"文件夹归root用户所有,而不是我自己 . 我不确定是什么原因引起的 . 也许我一度安装了node或npm作为root管理员 . 在任何情况下,我只是运行 sudo chown -R [username] .npm ,我终于能够再次从我的项目中运行 npm install 命令!

  • 11

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

    sudo -u someUser npm install
    

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

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

    有相同的问题并通过根据接受的答案更改持久性来修复它:

    sudo chown -R $USER ~/.npm
    

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

    对于记录: /usr/local 中的"usr"代表 Unix System Resources .

  • 421

    这些都不适合我 . 通过执行以下操作,我必须以root身份运行:

    sudo su -
    sudo npm install forever -g
    

    然后在Linux Ubuntu 14.04上安装该软件包 .

  • 0

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

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

    您可以在此处阅读其他官方推荐的解决方案:

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

  • 1

    我的解决方案

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

    在我的情况下是:

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

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

    npm cache clean
    

    有效 !

  • 152

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

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

  • 4

    Disclaimer

    我是 Windows 用户 . 但是,我和我的团队遇到了很多关于npm安装错误的问题 .

    Problems

    以下是经验教训清单以及一直拯救我们的可能的根本解决方案:

    • node_modulesnpm 本地安装目录因操作系统的缺点而无法修改,例如无法处理超过255个字符的路径 .

    • 如果通过命令行工具擦除文件夹,它可能仍然显示为资源管理器中存在的文件夹,当尝试访问它时会出现许多权限错误 .

    • 根据您的防病毒软件和/或本地策略管理器,您可能能够创建 node_modules 文件夹以及稍后降级的访问权限或权限,从而导致许多安装错误 .

    • 启用npm日志以进一步了解可能出现的问题:

    npm install --loglevel verbose

    Radical

    全局安装rimraf

    npm install rimraf -g
    

    node_modules 上运行rimraf:

    rimraf yourDir/node_modules
    

    然后尝试运行:

    npm install
    

    Warning!

    或者缺乏 . 请务必小心 rimraf 命令后面的内容 . 没有警告,没有提示,没有任何东西 . 它只是从地球清洁阶段清除目录,就像它从未出现过一样 . 尝试自己承担风险 .

相关问题