NPM不安装模块依赖项

时间:2013-08-23 11:23:27

标签: npm

这是我在父项目中包含的模块的package.json

{
  "version": "0.0.1",
  "name": "module-name",
  "dependencies": {
    "express": "3.3.4",
    "grunt": "0.4.1",
    "grunt-contrib-compass": "0.4.0",
    "grunt-contrib-copy": "0.4.1",
    "grunt-contrib-cssmin": "0.4.1",
    "grunt-contrib-jshint": "0.6.3",
    "grunt-contrib-requirejs": "0.4.1",
    "grunt-contrib-uglify": "0.2.2",
    "grunt-contrib-watch": "0.5.1",
    "grunt-express-server": "0.4.1",
    "grunt-karma": "0.4.5",
    "grunt-regex-replace": "0.2.5",
    "request": "2.25.0"
  },
  "scripts": {
    "postinstall": "grunt install"
  }
}

需要注意的一点是,此模块包含在私人仓库中,我将其包含在父package.json中,如:"module-name": "git+ssh://git@myserver:user/module-name.git"

17 个答案:

答案 0 :(得分:129)

看起来你遇到了一个已存在很长时间但尚无解决方案的bug。在npm存储库中有几个针对此案例的未解决问题:

在第一篇文章中,人们列出了您可能尝试的几种解决方法。

另一种解决方案可能是(有点hackish)明确地将依赖关系列为第一级依赖关系。这要求你保持清单,但实际上它必须很少完成。

答案 1 :(得分:105)

我有类似的问题,删除整个node_modules文件夹并重新安装为我工作。从IT Crowd节目中学到了这个技巧!

rm -rf node_modules
npm install

答案 2 :(得分:24)

我正在使用Windows机器。

  1. 我删除了node_modules文件夹。
  2. 不知何故,package.lock.json文件正在创建。我删除了那个文件。
  3. 然后是npm install。
  4. 清洁构建。
  5. 运行。

答案 3 :(得分:15)

如果你继承了这段代码,可能是依赖项和版本被锁定了,你有一个./npm-shrinkwrap.json文件。

如果您的依赖项未在该文件中列出,则永远不会使用npm install命令安装它。

您需要手动安装软件包,然后运行npm shrinkwrap来更新shrinkwrap文件。

答案 4 :(得分:10)

我怀疑您遇到的问题是package.json文件与Gruntfile.js不在同一目录中。当您运行grunt xxx命令时,会收到错误消息,如:

Local Npm module "xxx" not found. Is it installed?

目前,解决方案是:

  • 在与Gruntfile.js相同的目录中创建package.json
  • 定义grunt项目所需的模块
  • 执行npm install以在本地加载
  • 现在所需的grunt命令应该有效。
恕我直言,很遗憾我们不能拥有从父npm模块加载的grunt解析模块(即同一项目中父目录中的package.json)。讨论here似乎表明这样做是为了避免加载“全局”模块,但我认为我们想要的是从“我的项目”模块加载。

答案 5 :(得分:9)

OP可能适用于较旧版本的节点。但是,我也遇到了与节点4.4.1相同的情况。

它很可能与您正在使用的节点版本相关联。尝试升级到最新版本。如果某些依赖项与节点版本不兼容,则不会传递加载。

我通过运行npm update找到了这个。

升级到最新版本(4.4 - > 5.9)后;这个问题得到解决。

答案 6 :(得分:7)

就我而言,它有助于删除node_modulespackage-lock.json

之后只需使用npm install重新安装所有内容。

答案 7 :(得分:4)

万一有人遇到这种困境,并且碰巧犯了我所做的同样的马因娜错误,这就是我的情况。在我的头撞到墙上一小时之后,我意识到我的json错误地嵌套了,关键的“依赖关系”在关键的“存储库”里面。
毋庸置疑,没有明显的错误,也没有安装任何模块。

答案 8 :(得分:3)

您可能需要安装grunt-cli,在执行npm安装之前尝试此操作:

sudo npm install -g grunt-cli

修复了grunt没有为我退出,你还需要一个有效的grunt文件。

来源:https://stackoverflow.com/a/16456467/241294

答案 9 :(得分:3)

另一种解决方法是将其添加到模块package.json脚本部分

"preinstall": "npm install {Packages You depend on}"

它将要做的是,它将安装模块所需的所有软件包,而您不会收到该错误。

答案 10 :(得分:2)

当我在Windows上安装一个干净的Node dev环境时,我收到了这个错误。

为了解决这个问题,我进入了我的新项目目录(我只是搭建了yo angular)并输入了两个命令:

npm install -g grunt --save-dev

这会将本地grunt依赖项安装到您的项目中。下一个:

npm install

这将确保安装所有(新)项目依赖项。

多田!

答案 11 :(得分:1)

还要检查您的包裹名称是否被正确接受:

错误:

<form class="navbar-form" role="search">
<div class="input-group add-on">
<input class="form-control" placeholder="Recherche..." name="search" id="search" type="text">
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</form>


纠正

public function index(Request $req){

     if($req->search == ""){
            $feedbacks = Feedback::paginate(5);
           return view('admin.feedbacks.index', compact('feedbacks'));
     } else {
          $feedbacks = Feedback::whereHas('candidats.name', 'LIKE', '%' .$req->search . '%')
        ->paginate(3);
        $feedbacks->appends($req->only('search'));
        return view('admin.feedbacks.index', compact('feedbacks'));
     }  

    }

答案 12 :(得分:0)

我花了几个小时试图调试这个问题,最后我将 NODE_ENV= env 变量设置为“生产”。

来自https://riptutorial.com/node-js/example/10101/setting-node-env--production- “当 NODE_ENV 环境变量设置为‘生产’时,package.json 文件中的所有 devDependencies 在运行 npm install 时都将被完全忽略。”

答案 13 :(得分:0)

我认为我也遇到了这个问题,发现的最佳解决方案是查看控制台并找出抛出的错误。因此,我仔细阅读了一下,发现问题是我没有在package.json中指定存储库,说明和有效名称。我添加了这些信息,一切正常。

答案 14 :(得分:0)

值得一提的是确保您的依存关系应位于dependencies的{​​{1}}部分(而不是package.json)。

我的问题与OP基本相同:

  • 通过其他仓库中的devDependencies安装一个私有仓库(我们将其命名为repo1)(我们称之为"module-name": "git+ssh://git@myserver:user/my-repo-name.git"
  • repo2的{​​{1}}中,不存在来自repo2的一个程序包依赖项。
  • 我的愚蠢错误!.. node_modulesrepo1而不是repo1中列出了这种依赖关系
  • 将我的devDependencies的{​​{1}}中的依赖项从dependencies移到repo1
  • 在我的package.json中,我删除了devDependenciesdependencies,做了repo2,这真是一个依赖!

答案 15 :(得分:0)

使用旧的节点版本。使用最新版本的节点,如下所示:

$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule

编辑:还请确保您save
例如:npm install yourmoduleName --save

答案 16 :(得分:0)

我遇到了同样的问题。但是在同一台机器上,一个项目有一个很好的package.json,我的所有依赖项都已成功安装。在另一个项目中,无论我做什么,都没有安装package.json依赖项。 我刚刚复制了package.json并粘贴到另一个项目中。它奏效了! 我发现的差异只是文件开头的空行。不知道或它影响任何事情,也许是其他一些问题。但问题只是package.json文件。