删除模块目录后无法再安装 npm

Ola*_*son 5 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'
Run Code Online (Sandbox Code Playgroud)

所以我很沮丧地删除了模块的目录,却发现自己无法前进或后退。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
Run Code Online (Sandbox Code Playgroud)

并尝试安装原始版本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
Run Code Online (Sandbox Code Playgroud)

您可能已经猜到了,我对 Node.js、Node-RED 和 npm 还很陌生,但我无法帮助自己,所以必须寻求帮助!npm 似乎在寻找属于我要安装的包的 package.json 文件的本地副本,这对我来说似乎是荒谬的?

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

Ola*_*son 1

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

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

然后,为了解决从 GitHub URL 安装时的权限问题,我发现我需要模拟“nodered”用户su - 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似乎没有提供任何专用的“更新”方法。