Node.js npm包未列在项目';s package.json,但没有其他错误

Node.js npm包未列在项目';s package.json,但没有其他错误,node.js,npm,Node.js,Npm,我在我的项目中看到了一个奇怪的情况。 有3个包未在package.json中列出,而是在开发过程中安装的 据我所知,npm列表应该向我显示无关错误。但是,没有显示任何错误。我想知道npm是如何决定哪个包是无关的 这三个包是async、debug和mime。我使用的是npm1.4.28 我想知道npm是如何决定哪个包是无关的 不在package.json中的已安装包将触发npm无关错误 尝试刷新本地节点\u模块目录。 使用--save/--save dev键安装所需的软件包。首先,您应该更新您的n

我在我的项目中看到了一个奇怪的情况。 有3个包未在
package.json
中列出,而是在开发过程中安装的

据我所知,
npm列表
应该向我显示
无关错误
。但是,没有显示任何错误。我想知道npm是如何决定哪个包是无关的

这三个包是
async
debug
mime
。我使用的是
npm1.4.28

我想知道npm是如何决定哪个包是无关的

不在package.json中的已安装包将触发
npm无关错误

尝试刷新本地
节点\u模块
目录。
使用
--save
/
--save dev
键安装所需的软件包。

首先,您应该更新您的
npm
,因为
1.4.28
非常旧;最新版本是
2.4.1

其次,只有当包不是
package.json
或其任何依赖项中命名的(依赖项、依赖项、可选依赖项)时,它才是无关的

例如,我可以创建以下场景:


$mkdir测试和cd测试
$echo{}>package.json
$npm安装--保存jslint
$npm安装退出
$npm ls

现在
exit
是无关的,尽管它是
jslint
的依赖项,因为
jslint
node\u modules/jslint/node\u modules/exit
下有自己的
exit
版本。让我们摆脱它:


$rm-射频节点模块/jslint/node模块/exit
$npm ls

现在
exit
不再是无关的,因为它需要满足
jslint
的依赖性。但是,如果我查看
/node\u modules
,我将看到两个包,
exit
jslint
,其中只有一个在
package.json
中命名


如果我误解了你的问题,请告诉我。

什么是“在开发过程中安装”。意思是?实际上,我不确定何时安装它们,可能是
npm install async
npm install async--save
npm install async--save dev
,但是,我刚刚注意到,如果我卸载它们,npm列表将向我显示程序包所需的错误,例如,我只看到npm ERR!缺少:调试@*,是必需的mocha@1.18.2 . 它似乎不是我安装的,它是因为我安装了mocha而安装的。很抱歉,我想结束这个问题,因为我试图卸载我的package.json中没有列出的包,我立即看到一些错误,例如
npm ERR!缺少:调试@*,是必需的mocha@1.18.2
。然后,我重新安装了这些错误中需要的软件包,它们就消失了。所以,我想这是因为这些软件包是我在开发过程中临时安装的,当我安装其他软件包时,它们就变成了
必需的
,不再是多余的了。你的答案是我的问题
不在package.json中的已安装包应触发npm无关错误
。然而,在我的例子中,它不会触发这个错误。另外,当我卸载这个包时,它没有在package.json中列出<代码>npm列表将显示错误,例如
npm错误!缺少:调试@*,是必需的mocha@1.18.2
因此,很抱歉,
安装的包不在包中。json将触发npm无关错误。
不是正确答案,我猜npm有自己的逻辑来决定哪个包是无关的。是的,这就是我在评论中的意思,我想在理解这一点后结束这个问题。你的演示更清楚地解释了什么是无关的。谢谢:)补充评论。我认为npm无关的问题不是关于npm版本1.4.28:)