2013-08-23 211 views
107

这对于我,包括父项目的模块,我package.jsonNPM不安装模块依赖

{ 
    "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://[email protected]:user/module-name.git"

+0

你的package.json看起来不错,就像你用来包含它的行一样。你有错误信息吗?在你的道路上是git吗? – poida

+0

我没有得到任何错误每sa,模块安装,但我的'postinstall'脚本失败,因为没有找到本地'grunt'包,因为它们不是由NPM安装 –

+1

这个问题在2016年11月仍然存在。我做了一个干净的安装一台新电脑上的工作模块。 @ Mohsen的答案解决了它。 –

回答

108

它看起来像你遇到了一个存在了很长一段时间的错误,并没有解决方案。有在故宫库对于这种情况的几个开放式的问题:

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

一个替代解决方案可能(有点hackish)明确列出依赖关系作为第一级依赖。这需要你维护清单,但实际上它必须很少进行。

+9

很高兴知道这不只是我,有一些点! –

+1

它仍然不适合我。 –

+0

@ Flame2057很高兴知道你运气不佳,尽管信息量不大。你可以继续并提出一个问题,希望社区有解决的知识。玩的开心! – allprog

3

您可能需要安装咕噜-CLI,做一个NPM之前尝试此安装:

sudo npm install -g grunt-cli 

修复了咕噜声不会退出我,你还需要一个有效的咕噜声文件。

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

+0

嗯,这就是所有:http://pastebin.com/pZAcSQwi –

+0

当你在命令提示符下尝试命令'grunt'时会发生什么?它是否存在于你的道路上?你是对的,它看起来好像是从你的pastebin安装的。你用sudo和-g安装了吗? – poida

+0

这不是一个与grunt的问题:'〜ᐅ哪个咕噜 /opt/local/bin/grunt' –

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模块(即同一个项目中的父目录中的package.json)加载grunt解决模块。讨论here似乎表明它已完成避免加载“全局”模块,但我认为我们想要的是从“我的项目”模块加载。

+0

所以这是我的父项目(这是导入子模块项目的结构):http://cl.ly/image/020E0b3I0t1A和我的子模块项目的结构:http://cl.ly/image/2q0L3l1v0s40;你可以看到两者都包含'Gruntfile.js',并且都包含同一级别的'package.json'。 –

+0

这不是'grunt'的问题,这是'npm'的问题,而不是递归地在我的子模块项目中安装依赖项。 –

94

我有非常类似的问题,删除整个node_modules文件夹和重新安装为我工作。从IT Crowd节目中学会了这个把戏!

rm -rf node_modules 
npm install 
+0

这实际上对我有用。我认为这真的很奇怪 - 是什么导致了这个小故障?无论如何,如果我删除该文件夹并重新运行npm install,那么它可以工作。之前,没有任何东西会安装在该子目录中。现在,它全部安装在那里。 – CtheGood

+0

谢谢@Moshen。我已经删除了旧版本的Node,并进行了全新安装。我删除了所有node_modules /全局,但忘记从一些现有的应用程序中删除。我必须删除每个现有应用程序目录中的node_modules文件夹,然后运行'npm install'。 – wilblack

+0

古老的“你尝试从_scratch_方法重新启动吗?”。这对我很好。 –

2

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

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

npm install -g grunt --save-dev

将安装在本地咕噜依赖于你的项目。下一页:

npm install

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

田田!

3

为了防止任何人遭受这种困境,并且恰好与我做了相同的茶氨酸错误,这里就是我的情况。在将我的头靠在墙上一个小时后,我意识到我的json被错误地嵌套了,关键的“依赖关系”在关键的“存储库”中。
不用说,没有错误是明显的,没有安装模块。

13

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

如果您的依赖项没有在该文件中列出,它将永远不会与npm install命令一起安装。

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

+2

我有一个问题,在更新到节点8.0.0和npm 5.0.0后,手动安装包创建了一个'package-lock.json'文件。在那之后,运行'npm install'只会安装那个包,而不是所有的依赖包。删除'package-lock.json'并重新运行'npm install'解决了我的问题。 – Monkpit

+1

@Monkpit这也为我解决了,谢谢! 'package-lock.json'正在妨碍中。 – VirtualWolf

6

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

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

升级到最新版本(4.4 - > 5.9)后;这已得到修复。

+2

这一个为我'npm update'工作。谢谢!!!! – mike123

0

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

9

我正在使用Windows机器。

  1. 我删除了node_modules文件夹。
  2. 不知何故,package.lock.json文件正在创建。我删除了该文件。
  3. 然后npm安装。
  4. 清洁版本。
  5. 运行。
+2

这个答案需要得到更多的爱。package.lock.json文件搞砸了我。 – mwilcox

0

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

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

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18613478) –