所以我想帮忙,并分叉一个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身份运行的。
答案 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模块。