NPM不安装模块依赖项

Ahm*_*man 140 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

all*_*rog 142

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

在第一个人列出了您可能尝试的几种解决方法.

另一种解决方案可能是(有点hackish)明确地将依赖关系列为第一级依赖关系.这需要您维护列表,但实际上它必须很少进行.

  • 很高兴知道这不仅仅是我,还有一些要点! (14认同)

Moh*_*sen 109

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

rm -rf node_modules
npm install
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。如果我可以再次为 IT Crowd 参考 +1,我会的。 (2认同)

Vir*_*t18 28

我正在使用Windows机器.

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

  • 这个答案需要得到更多的爱.package.lock.json文件搞砸了我. (11认同)

Ric*_*ins 15

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

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

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

  • 我有一个问题,在更新到节点8.0.0和npm 5.0.0之后,手动安装软件包创建了一个`package-lock.json`文件.之后,运行`npm install`只能安装那个包而不是所有依赖的包.删除`package-lock.json`并重新运行`npm install`为我解决了这个问题. (2认同)

Cai*_*ius 12

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

错误的:

{
    "name": "My Awesome Package"
}
Run Code Online (Sandbox Code Playgroud)
正确的:
{
    "name": "my-awesome-package-name"
}
Run Code Online (Sandbox Code Playgroud)


kct*_*ang 10

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

Local Npm module "xxx" not found. Is it installed?
Run Code Online (Sandbox Code Playgroud)

目前,解决方案是:

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

恕我直言,很遗憾我们不能拥有从父npm模块加载的grunt解析模块(即同一项目中父目录中的package.json).这里的讨论似乎表明它是为避免加载"全局"模块而完成的,但我认为我们想要的是从"我的项目"模块加载.


Nrj*_*Nrj 9

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

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

我跑步找到了这个npm update.

升级到最新版本(4.4 - > 5.9)后; 这是固定的.


小智 7

在我的情况下,它有助于删除node_modulespackage-lock.json.

之后,只需重新安装一切npm install.


caf*_*anu 5

值得一提的是,确保您的依赖项应该属于dependencies您的部分package.json(而不是devDependencies)。

\n\n

我的问题与OP基本相同:

\n\n
    \n
  • 通过在其他仓库(让我们称之为repo1)中安装私人仓库"module-name": "git+ssh://git@myserver:user/my-repo-name.git"(让我们称之为repo2),
  • \n
  • repo2\'s中node_modulesrepo1不存在一个包依赖项。
  • \n
  • 我愚蠢的错误!...repo1列出了该依赖项devDependencies而不是dependencies
  • \n
  • repo1将我的\ 中的依赖项package.jsondevDependencies 移至dependencies
  • \n
  • 在我的 中repo2,我删除了我的node_modulesand package-lock.json, did npm install,一个 voil\xc3\xa0!... 依赖关系就在那里!
  • \n
\n