删除模块目录后,不再可以安装npm

时间:2017-08-22 01:23:33

标签: node.js npm node-red

所以我想帮忙,并分叉一个Node-RED模块做一些小的贡献,但后来迷失了如何让Node-RED运行我的fork(用于测试)而不是打包版本。然后我了解了npm从Github URL安装的能力,这很好,但是因为我已经安装了模块,所以不行。然后我发现我无法将其卸载

npm uninstall original-module
npm ERR! path /home/nodered/.node-red/node_modules/original-module/package.json
npm ERR! code ELOOP
npm ERR! errno -40
npm ERR! syscall open
npm ERR! ELOOP: too many symbolic links encountered, open '/home/nodered/.node-red/node_modules/original-module/package.json'

所以在沮丧中我删除了模块的目录,却发现自己无法前进或后退。 npm install https://github.com/me/forkedmodule

失败
npm ERR! code 128
npm ERR! Command failed: /usr/bin/git clone --depth=1 -q -b master https://github.com/me/forkedmodule.git /root/.npm/_cacache/tmp/git-clone-d31dc53b
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-d31dc53b': Permission denied
npm ERR! 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2017-08-22T01_07_18_257Z-debug.log

并尝试使用npm install original-module安装原始文件时失败

npm ERR! code ENOLOCAL
npm ERR! Could not install from "node_modules/original-module" as it does not contain a package.json file.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2017-08-22T01_09_56_127Z-debug.log

正如你可能已经猜到的那样,我对Node.js,Node-RED和npm都很陌生,但我一直无法帮助自己,所以不得不寻求帮助!对我来说,npm似乎正在寻找属于我正在尝试安装的软件包的package.json文件的本地副本,这似乎是荒谬的。

编辑:我应该补充说,上述命令都是以root身份运行的。

2 个答案:

答案 0 :(得分:1)

好的,找到了解决方案,但不确定它是否是最好的解决方案!

在“project”目录(在我的例子中为/home/nodered/.nodered)中有一个package-lock.json文件,其中列出了项目使用的包。在那里,我找到了我删除的original-module条目,之后我可以使用npm install original-module“正常”安装软件包。

然后,为了解决从GitHub URL安装时的权限问题,我发现我需要使用su - nodered模仿“nodered”用户(在我的情况下,它是一个无密码的用户)。由于“nodered”npm install https://github.com/me/forkedmodule成功而没有任何错误。有点好奇,因为我之前尝试以root身份执行此操作,并获得了权限错误,但是你去了。我也借此机会chown -R项目的node_modules目录到nodered:nodered,因为我看到这有点乱。

将来,我会尝试首先记住su -到我的nodered用户,并在运行/home/nodered/.node-red之前导航到项目根目录(在我的情况下再次npm install)。希望这将避免任何进一步的问题。哦,还有一个注意事项给那些只想对GitHub上托管的模块进行快速更改的人:为了“拉动”更改,你只需再次运行npm install https://github.com/me/forkedmodule - npm似乎没有提供任何专用的“更新”方法。

答案 1 :(得分:0)

我有同样的问题,在我的情况下,解决方案是删除package-lock.json,删除node_modules,然后重新安装npm模块。