【问题标题】:What does 'invalid' mean when using npm list?使用 npm list 时“无效”是什么意思?
【发布时间】:2014-10-31 00:56:26
【问题描述】:

我是 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**

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

【问题讨论】:

标签: node.js npm bower


【解决方案1】:

我在“依赖项”和“devDependencies”中安装了相同的软件包但版本不同时出现此错误。

【讨论】:

    【解决方案2】:

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

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

    解决这个问题
    npm update 
    

    紧随其后

    npm install.
    

    【讨论】:

    • 你能详细说明你的答案吗?如果somelibpackage.json 依赖于"async":"0.9.3",那么npm 肯定应该将async 0.9.3 安装到somelib/node_modules 中并且require("async") 应该加载async 0.9.3。你能告诉我们它会加载不同版本的异步的情况吗?不怀疑您的回答是否有用,我只是不完全理解。
    • @mikemaccana somelibpackage.json 将始终将somelibpackage.json 中提到的模块版本本地安装到该模块。因此,它不会在模块内引起任何问题。但是在你的项目设置中,如果你做了类似npm install async@0.6 的事情,并且在你的package.json 中你指定了依赖为async: 0.9.x,那么就会出现这种情况。
    • 啊。我的项目设置通常只运行npm install(没有任何选项)并安装package.json 中的任何内容,因为所有依赖项都应该在package.json(或shrinkwrap 文件)中。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      最简单的答案

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

      示例

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

      npm list | grep axios 现在会产生

      ├─┬ axios@0.18.1 invalid
      

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

      【讨论】:

        【解决方案5】:

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

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

        beeminder 包是我维护的,所以在我的主应用程序中,我将其 semver 设置为latest。以前这似乎可以正常工作,但我猜npm 的较新版本不喜欢它。

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

        【讨论】:

          猜你喜欢
          • 2016-03-31
          • 2020-05-18
          • 1970-01-01
          • 2020-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-09
          • 2021-12-10
          相关资源
          最近更新 更多