注意:我拥有最新的npm和节点版本。我已经尝试过npm install error ENOTDIR中提供的答案,但对我没有用。
我需要在NodeRed上安装2个.tgz软件包提供的npm模块
1. x.tgz
2. y.tgz
我可以使用npm install path/to/x.tgz
我使用了相同的命令npm install path/to/y.tgz
,但出现以下错误。
malintha@malintha-VirtualBox:~/.node-red$ sudo npm install path/to/y.tgz
npm ERR! path path/to/y.tgz/x.tgz
npm ERR! code ENOTDIR
npm ERR! errno -20
npm ERR! syscall stat
npm ERR! ENOTDIR: not a directory, stat 'path/to/y.tgz/x.tgz'
根据错误日志,y模块正在其中查找x.tgz。然后,我检查了package.json
个伪像中的y.tgz
。
我可以看到它里面有x.tgz
作为依赖项,但是里面没有x.tgz。
"dependencies": {
"@abc/pqr": "file:x.tgz",
"ajv": "^6.5.1",
"debug": "^3.1.0"
}
根据说明,如果我先安装x.tgz,然后再安装y.tgz,应该没问题。我可以在一段时间之前安装这些x
和y
,但现在无法安装。
此问题的根本原因可能是什么? 这是npm和节点版本相关的问题吗?
答案 0 :(得分:2)
删除旧答案后,我将重新编写此答案。我在Linux上分别使用节点v11.6.0和npm v4.5.0-next.0对其进行了测试。
要安装y.tgz,我尝试如下操作:
我对y.tgz的package.json
进行了如下修改:
"dependencies": {
"@abc/pqr": "file:../x.tgz",
"ajv": "^6.5.1",
"debug": "^3.1.0"
}
dependencies
支持file:
+相对路径或绝对路径。
因此,您可以选择任何人作为您的开发条件。