npm windows安装全局结果npm ERR! 外来

我是新来的咕噜和NPM。 所以我在网站上尝试了一些“cookbook-example” 。 现在你不应该看那里,但我认为这可能是好的,分享网站。 到目前为止这么好,直到全球安装。 (好吧,我必须弄清楚一些错误,但是现在我已经在使用npm了)。

当谈到在全球安装某些东西的时候,我会陷入困境。

我到目前为止testing全球安装一些软件包:

  1. 创buildtesting目录grunttest

  2. 在那个目录里面:

    npm install -g jshint

输出我可以看到:

  npm http GET https://registry.npmjs.org/jshint npm http 304 https://registry.npmjs.org/jshint ... npm http 304 https://registry.npmjs.org/string_decoder C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint ├── console-browserify@0.1.6 ├── exit@0.1.2 ├── underscore@1.4.4 ├── shelljs@0.1.4 ├── minimatch@0.2.14 (sigmund@1.0.0, lru-cache@2.5.0) ├── cli@0.4.5 (glob@3.2.9) └── htmlparser2@3.3.0 (domelementtype@1.1.1, domutils@1.1.6, domhandler@2.1.0, readable-stream@1.0.26-2) 

我刚刚意识到304,这应该是好的,因为刚才说从上次安装(前几分钟)没有修改资源。

检查jshint是否存在:

 `npm -global list` 

输出:

 npm@1.4.3 C:\Program Files\nodejs\node_modules\npm ├── abbrev@1.0.4 ├── ansi@0.2.1 ├─... ├── ├── graceful-fs@2.0.2 ├── inherits@2.0.1 ├── ini@1.1.0 ├─┬ init-package-json@0.0.14 │ └── promzard@0.2.1 ├─┬ jshint@2.4.4 extraneous │ ├─┬ cli@0.4.5 │ │ └─┬ glob@3.2.9 │ │ └── inherits@2.0.1 │ ├── console-browserify@0.1.6 │ ├── exit@0.1.2 │ ├─┬ htmlparser2@3.3.0 │ │ ├── domelementtype@1.1.1 │ │ ├── domhandler@2.1.0 │ │ ├── domutils@1.1.6 │ │ └─┬ readable-stream@1.0.26-2 │ │ └─... ├── text-table@0.2.0 ├── uid-number@0.0.3 └── which@1.0.5 **npm ERR! extraneous: jshint@2.4.4 C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm** 

问题:

  1. 为什么我得到npm ERR! 无关…?
  2. 这是什么意思?
  3. 我该如何解决这个问题?

信息:

我在Windows 7上使用cygwin作为shell。 试图只是jshint( jshint someTestfile.js )当然不起作用。

在此先感谢,梅鲁

npm ERR! extraneous npm ERR! extraneous意味着安装了一个软件包,但是没有在你的项目的package.json列出。

既然你列出了已经全局安装的软件包,它会给你带来很多无关紧要的错误,因为大部分全局安装的东西都不在你的项目的package.json

1&2:这意味着你没有在项目的package.json文件中列出的jshint,但它是全局安装的。 所以这不是一个大问题。

3:为了避免这个多余的错误,你可以使用--save选项运行或重新运行安装。 这会自动更新你的package.json文件:

 npm install -g jshint --save 

或者需要用"dependencies": {...}手动更新package.json文件"dependencies": {...}

我解决了这个问题,通过在父包的文件夹中执行一个npm update ,从文件夹中删除了一些无关的包,然后用npm uninstall <package>

似乎工作,因为我没有得到任何错误后,这样做。

我通过结合所有的答案来解决这个问题。 起初,我在全球安装了这个软件包。

 npm install -g packagename --save 

由于npm在全局安装了这个包,但没有将它添加到我的本地package.json文件中,所以我不得不做一些事情。

我select,删除本地的解决scheme,然后全球安装。

 npm uninstall packagename npm install -g packagename 

这样我没有更多的警告,不要搞乱package.json文件。

我的情况是,我看到这个'npm ERR! 当我做'npm ls'的时候,在我的cygwinterminal里有'extraneous'消息。 我觉得这是一个全球性的损坏后,有很多修补后的设置。 我在这里学习以下观察:

  • 'npm ls'根据您当前的文件夹位置给出不同的输出。
  • 'npm ls'尝试检测当前文件夹位置中是否存在“node_modules”文件夹,并列出这些内容。 不是全球的!
  • 此外,如果包含“node_modules”的当前文件夹也有一个package.json文件,其中包含的模块数量较less,则会显示错误。

我'package.json'和'npm ls'不再显示错误信息。 所以我说,总是检查当前位置是否存在“node_modules”文件夹和package.json文件,因为这些文件在检查中首先优先,如果缺less这些文件,则检查继续到父文件夹等等,如果你已经修改了很多代码片段,那么你可能已经分散了大量的node_modules文件夹和package.json文件。 这里没有什么东西真的被破坏了,不像我们在做J2EE J2EE开发/ Eclipse IDE时的经验,或者在我们必须使用regedit来改变Windows设置的时候。

这是因为你的软件包不在你的package.json中。 如果添加它,问题就解决了,请看下面的图片:

在这里输入图像说明

在我的情况下,这是因为package.json文件中的软件包名称与相关模块的package.json中列出的依赖名称不同。 我的错误,因为它是我创build的一个新模块,但难以发现,因为npm不会给出任何线索。

这发生在使用dependencies: { "my-module": "file:local-modules/mymodule" }语法,在名称“my-module”中有一个错字。