NPM不';t安装模块依赖项

NPM不';t安装模块依赖项,npm,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

这是我在父项目中包含的模块的
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
中,比如:
“模块名”:“git”+ssh://git@myserver:user/module name.git“

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

sudo npm install -g grunt-cli
这修复了grunt不存在的问题,您还需要一个有效的grunt文件


来源:

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

Local Npm module "xxx" not found. Is it installed?
目前,解决方案是:

  • 在与Gruntfile.js相同的目录中创建package.json
  • 定义grunt项目所需的模块
  • 执行
    npm install
    本地加载它们
  • 现在,所需的grunt命令应该可以工作了

很遗憾,我们不能从父npm模块(即同一项目的父目录中的package.json)加载grunt解析模块。讨论似乎表明,这样做是为了避免加载“全局”模块,但我认为我们想要的是从“我的项目”模块中加载。

看起来您遇到了一个已经存在了很长一段时间但尚未解决的错误。在npm存储库中,此案例存在几个未决问题:

  • npm安装应递归检查/安装依赖项(已关闭)
  • 本地专用模块依赖项(已关闭)
在第一个选项中,人们列出了几种您可以尝试的解决方法


另一种解决方案可能是(有点老套)将依赖项显式地列为第一级依赖项。这需要您维护列表,但实际上必须很少进行维护。

我遇到了非常类似的问题,删除整个
节点模块
文件夹并重新安装对我来说很有效。从表演中学会了这个把戏


我在windows上安装干净的节点开发环境时收到此错误

为了解决这个问题,我进入了我的新项目目录(我刚刚用
yo
)并输入了两个命令:

npm安装-g grunt--save dev

这将为您的项目安装本地grunt依赖项。下一步:

npm安装

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


塔达

以防万一,有人正遭受这种困境,并且碰巧犯了与我同样的错误,以下是我的情况。在我的头撞到墙上一个小时后,我意识到我的json嵌套不正确,键“dependencies”在键“repository”中。

不用说,没有明显的错误,也没有安装任何模块。

如果您继承了此代码,则可能是依赖项和版本被锁定,并且您有一个./npm-shrinkwrap.json文件

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


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

OP可能适用于旧版本的node。但是,节点4.4.1也面临同样的问题

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

我通过运行
npm update
发现了这一点


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

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

我正在使用windows机器

  • 我删除了node_modules文件夹
  • 不知何故,package.lock.json文件正在创建中。我删除了那个文件
  • 然后安装npm
  • 干净利落

  • 在我的例子中,它有助于删除
    node\u模块
    package lock.json


    之后,只需使用npm install重新安装所有内容,另一种解决方法是将其添加到模块
    包.json
    脚本部分

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

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

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

    $nvm使用8.0

    $rm-射频节点\u模块

    $npm安装

    $npm i somemodule

    编辑:还要确保
    保存


    例如:
    npm安装您的moduleName——保存

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

    错:
    {
    “名称”:“我的超赞套餐”
    }
    

    对的
    {
    “名称”:“我最棒的软件包名称”
    }
    
    值得一提,以确保您的依赖项应位于
    包.json的
    依赖项部分(与
    devdependency
    相反)

    我的问题与OP基本相同:

    • 通过
      “模块名”:“git”安装私有repo(我们称之为
      repo1
      )+ssh://git@myserver:user/my repo name.git“
      在其他repo中(我们称之为
      repo2
    • repo2
      node\u模块中,
      repo1
      中没有一个包依赖项。
      "preinstall": "npm install {Packages You depend on}"