什么'无效'是什么时候使用npm列表?

时间:2014-09-06 03:49:31

标签: node.js npm bower

我是nodejs的新手,我刚刚全球安装了bower模块。从那时起,npm list命令提供了我在网上搜索但未找到任何帮助的以下输出:

**npm ERR! invalid: chalk@0.5.1 /usr/local/lib/node_modules/bower/node_modules/chalk  
npm ERR! invalid: ansi-regex@0.2.1 /usr/local/lib/node_modules/bower/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex  
npm ERR! invalid: configstore@0.3.1 /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/configstore  
npm ERR! invalid: object-assign@0.3.1 /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/object-assign  
npm ERR! invalid: registry-url@0.1.1 /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url  
npm ERR! invalid: strip-ansi@0.2.2 /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/string-length/node_modules/strip-ansi  
npm ERR! not ok code 0**

输出的其余部分是正常的,并列出已安装的模块。谁能解释一下发生了什么?

5 个答案:

答案 0 :(得分:43)

我遇到了这个错误,在"依赖关系中安装了相同的软件包"和" devDependencies"有不同的版本。

答案 1 :(得分:12)

这意味着某些东西取决于,例如"async":"0.9.3"但是当他们require("async")时,npm认为他们会得到一些其他版本。并检查package.json文件中列出的依赖项及其版本是否可用。

如果一切正常,那么你可以用

来解决这个问题
npm update 

接着是

npm install.

答案 2 :(得分:6)

我在安装较新版本的模块后遇到此错误,而不更新我的package.json。所以package.json需要旧版本,而npm list在我的node_modules目录中检测到更新的版本。

运行以下命令让我摆脱了消息。

npm install {required_module}@{new_version} --save

答案 3 :(得分:0)

我得到了一个相关但却不同的错误(但最终在这里,所以我在这里回答)在运行npm update之后我得到了。 (npm install,fwiw没有这样的问题)

myapp@1.0.0 /home/malcolm/myapp
├── beeminder@1.4.3  invalid

beeminder包是我维护的包,因此在我的主应用中,我将其semver设置为latest。这似乎以前工作正常,但我想npm的新版本并不喜欢它。

我认为使用^1.4.3是合理的,因为如果我引入新的更改,那么我可能正在更改自己的代码。但是,如果出于某种奇怪的原因,您需要最新的软件包(包括重大修改!),那么您可以使用>=作为前缀而不是^

答案 4 :(得分:0)

最简单的答案

当安装的软件包版本与 package.json 将安装的版本不对应时,就会出现这种情况。

示例

假设您在 "axios": "0.19.2", 中指定了 package.json,但之后您将使用 npm install axios@0.18.1 安装特定版本。

npm list | grep axios 现在会屈服

├─┬ axios@0.18.1 invalid

按照 this answer 中的说明进行修复。