我目前在一个包含node_modules
目录
ls
> coverage etc Gruntfile.js lib node_modules npm-debug.log package.json
在此目录中,npm install
会吐出以下内容:
npm ERR! Error: Attempt to unlock grunt-contrib-jshint@0.10.0, which hasn't been locked
npm ERR! at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1434:11)
npm ERR! at cb (/usr/local/lib/node_modules/npm/lib/cache.js:675:5)
npm ERR! at /usr/local/lib/node_modules/npm/lib/cache.js:684:20
npm ERR! at /usr/local/lib/node_modules/npm/lib/cache.js:1420:7
npm ERR! at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
npm ERR! at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
npm ERR! at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
npm ERR! at Object.oncomplete (fs.js:107:15)
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>
我尝试了npm config set prefix /my/path/ --global
,其中/ my / path /包含node_modules目录。我尝试使用-g --prefix = / my / path。显然没有办法改变我的安装目录。显然,设计中使用npm install工作的唯一方法是行不通的。
编辑:这是我在此期间必须使用的hacky解决方法。这显然不理想,但如果你的系统只有一个项目,那很好。
sudo npm install
sudo cp /usr/local/lib/node_modules /my/path/ -R
答案 0 :(得分:3)
除非您没有包含此内容,否则此处的症状与全局安装位置无关。
npm install
第一行输出中的错误表示您要解决的问题:
npm ERR! Error: Attempt to unlock grunt-contrib-jshint@0.10.0, which hasn't been locked
这表明您的解决方案与this other StackOverflow question中的解决方案相同,并且基于权限。快速搜索此错误文本还会产生许多与权限相关的类似解决方案。
检查目录权限以确保所有权合适。如果是,您也可以尝试sudo npm install
,但最好的答案是解析目录权限,而不是依赖sudo
。