NPM无法读取未定义的属性“0”

时间:2017-10-07 12:09:27

标签: npm

更新节点(最高v8.6.0)和npm(最高v5.5.1)后,我无法执行命令npm install。 在npm安装后我发出错误消息:

npm ERR! Cannot read property '0' of undefined

什么问题或我需要降级节点/ npm?

13 个答案:

答案 0 :(得分:36)

我遇到了同样的问题。

我删除了 node_modules package-lock.json ,然后执行了操作:

npm install 

它有效。

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

答案 1 :(得分:3)

执行2个步骤(窗口):

y删除节点文件夹

rm -rf ./node_modules删除rm package-lock.json文件

然后package-lock.json重新安装节点模块

答案 2 :(得分:2)

我做了一些测试:

nodejs@8.6.0 npm@5.5.1 - 我遇到麻烦,测试失败

nvm use 8.4.0

nodejs@8.5.0 npm@5.5.1 - 我遇到麻烦,测试失败

npm install npm@^5 -g

nodejs@8.4.0 npm@5.5.1 - 我遇到麻烦,测试失败

nvm use 8.6.0
npm install npm@^4 -g

nodejs@8.4.0 npm@5.4.2 - 我遇到麻烦,测试失败

<?php
require_once "DbOperations.php";
$response=array();
if($_SERVER['REQUEST_METHOD']=='POST'){
   if (isset($_POST['artifact_id'])) {

$editData;
if($_POST['artifact_id']!=='null'){
  $editData['artifact_id']=$_POST['artifact_id'];
  if($_POST['worker_id']!=='null'){
    $editData['worker_id']=$_POST['worker_id'];
  }else{
    $editData['worker_id']=null;
  }
  if($_POST['image']!=='null'){
    $editData['image']=$_POST['image'];
  }else{
    $editData['image']=null;
  }
  if($_POST['period']!=='null'){
    $editData['period']=$_POST['period'];
  }else{
    $editData['period']=null;
  }
  if($_POST['location_id']!=='null'){
    $editData['location_id']=$_POST['location_id'];
  }else{
    $editData['location_id']=null;
  }
  if($_POST['coordinate_x']!=='null'){
    $editData['coordinate_x']=$_POST['coordinate_x'];
  }else{
    $editData['coordinate_x']=null;
  }
  if($_POST['coordinate_y']!=='null'){
    $editData['coordinate_y']=$_POST['coordinate_y'];
  }else{
    $editData['coordinate_y']=null;
  }
  if($_POST['type']!=='null'){
    $editData['type']=$_POST['type'];
  }else{
    $editData['type']=null;
  }
  if($_POST['comment']!=='null'){
    $editData['comment']=$_POST['comment'];
  }else{
    $editData['comment']=null;
  }

    $db = new DbOperations();
    $db->editArtifact($editData);
  }
  }else{
       $response['error']=true;
       json_encode($response);
    }
  }
?>

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

答案 3 :(得分:2)

删除package.json.lock文件和node_modules文件夹,在我的情况下不幸地没有帮助。

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

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

yarn install

yarn // short version of yarn install

没有错误!

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

答案 4 :(得分:1)

似乎是一系列因素的问题。

这里有一些解决方法:

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

答案 5 :(得分:1)

升级nodeJS后,

npm 5.3.0在 Windows 10 中被破坏 你应该降级npm,这是一个临时的解决方案,但工作正常。

npm install -g npm@5.2.0

答案 6 :(得分:1)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

使用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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

就我而言,重新安装node_modules不能解决此问题。 问题是源代码中缺少一个*.ts文件。 不知道为什么它没有显示编译错误,但是将此缺少的文件添加到存储库中解决了此问题。

答案 11 :(得分:0)

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

npm install -g npm@latest

答案 12 :(得分:0)

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

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