【问题标题】:NPM Cannot read property '0' of undefinedNPM 无法读取未定义的属性“0”
【发布时间】:2017-10-07 12:09:26
【问题描述】:

更新 Node(最高 v8.6.0)和 npm(最高 v5.5.1)后,我无法执行命令 npm install。 npm install 后出现错误消息:

npm ERR! Cannot read property '0' of undefined

有什么问题或者我需要降级 node/npm ?

【问题讨论】:

  • 我已将 npm 降级为 4.6.1
  • @nocarrier 试试我的解决方案
  • 您应该将 npm 5.2.0 或更低版本降级。更新对于 Windows 10 有错误或其他问题。
  • @Dmitrii 这些解决方案中的任何一个对您有用吗?如果可以,您可以选择一个作为接受的答案吗?

标签: npm


【解决方案1】:

我遇到了同样的问题。

我删除了 node_modulespackage-lock.json 然后做了:

npm install 

它奏效了。

编辑@OwlyMoly 由于新的更新和对 package-lock.json 中旧依赖项的限制导致了这种冲突。通过npm install 不会解决这个问题。相反,放弃 npm_modules 和 package-lock.json 并执行npm install 将加载一个新的 node_modules 并且应该是 package.json 需要的。您必须提交新的 package-lock.json 以及项目的最新更改。

【讨论】:

  • 在运行这些步骤之前,删除缓存 npm cache clear --force 也有帮助。
  • 这个解决方案对我有用。我花了 2 小时才找到这个。当我删除 node_modules 时,它很少。我重新安装了 Node、NPM 并且每次都出现错误...
  • 可以确认npm cache clear --force 可以做一些有帮助的事情。我有一个与 property 0 of undefined 消息最接近的“蓝鸟”相关错误。
  • 在我的情况下删除 package-lock.json 就足够了,它没有进入创建 node_modules 目录的步骤
【解决方案2】:

执行以下 2 个步骤(窗口):

rm -rf ./node_modules 删除节点文件夹

rm package-lock.json 删除 package-lock.json 文件

然后npm install 重新安装节点模块

【讨论】:

    【解决方案3】:

    只需下载并安装最新的Yarn,它也是一个节点包管理器,由 facebook 开发,但具有更好的依赖管理。同时更新您的node cli(可选)。

    然后,使用yarn 安装您的依赖项:

    yarn install
    

    yarn // short version of yarn install
    

    没有错误!

    您可以在使用yarn 安装所有依赖项后继续使用npm 或继续使用yarn....这是您的选择。

    【讨论】:

      【解决方案4】:

      我做了一些测试:

      nodejs@8.6.0 npm@5.5.1 - 我有问题,测试失败

      nvm use 8.5.0
      

      nodejs@8.5.0 npm@5.5.1 - 我有问题,测试失败

      nvm use 8.4.0
      

      nodejs@8.4.0 npm@5.5.1 - 我有问题,测试失败

      npm install npm@^5 -g
      

      nodejs@8.4.0 npm@5.4.2 - 我有问题,测试失败

      nvm use 8.6.0
      npm install npm@^4 -g
      

      nodejs@8.6.0 npm@4.6.1 - 没问题,这解决了它。

      【讨论】:

        【解决方案5】:

        似乎是一个综合因素的问题。

        这里有一些解决方法:

        https://github.com/npm/npm/issues/18238

        【讨论】:

          【解决方案6】:

          在升级 nodeJS 后,windows 10 的 npm 5.3.0 已损坏。
          您应该降级 npm,这是一个临时解决方案,但工作正常。

          npm install -g npm@5.2.0

          【讨论】:

            【解决方案7】:

            对我来说 (npm@6.9.0) 通过删除 node_modules 并执行 npm install 解决了这个问题,但没有删除 package.json.lock 文件。

            【讨论】:

              【解决方案8】:

              尝试使用 nvm(节点版本管理器)。它可以帮助您为任何项目安装任何节点版本而不会出现任何错误。

              【讨论】:

              • 我尝试了一些节点版本(8.5 和 8.4)。它不是固定的。
              【解决方案9】:

              我在使用 npm 5.5.1 版本安装 babel-preset-stage-0

              时发现了同样的问题

              解决方案: 我将 npm 降级到 5.2.0 版本并尝试再次安装,然后它可以解决问题。

              npm i -g npm@5.2.0    
              npm i -D babel-preset-stage-0
              

              【讨论】:

                【解决方案10】:

                我在使用 nvs(节点版本切换器 - https://github.com/jasongin/nvsnode@10.15.3npm@6.9.0 时遇到了这个问题。原因是我与npm link 链接的本地包。解决方案是删除该文件夹。

                【讨论】:

                  【解决方案11】:

                  在我的情况下,重新安装 node_modules 并没有解决这个问题。 问题在于源代码中缺少一个*.ts 文件。 不知道为什么它没有显示编译错误,但是将这个丢失的文件添加到存储库中解决了这个问题。

                  【讨论】:

                    【解决方案12】:

                    将 npm 升级到版本 7.5.4 为我完成了这项工作。

                    npm install -g npm@latest
                    

                    【讨论】:

                      【解决方案13】:

                      只需删除 node_modulespackage-lock.json 并运行:npm install

                      只需运行:npm install -g npm@latest 即可将其升级到最新版本

                      【讨论】:

                        【解决方案14】:

                        什么对我有用:
                        npm ci

                        从头开始安装项目 文档:https://docs.npmjs.com/cli/v7/commands/npm-ci

                        删除 node_modules 并安装基于 package-lock.json 的所有内容,因此无需重新生成它

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 2019-11-20
                          • 1970-01-01
                          • 2018-07-17
                          • 2015-10-06
                          • 1970-01-01
                          相关资源
                          最近更新 更多