npm windows install全局结果为npm ERR!外来

时间:2014-03-24 20:52:35

标签: windows gruntjs npm

我是grunt和npm的新手。所以我在网站“http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developer#front_end_developers”上尝试了一些“cookbook-example”。 你不应该现在看那里,但我认为分享网站可能会很好。 到目前为止一直很好,直到全球安装。 (好吧,我必须弄清楚一些错误,但现在我已经工作了npm)。

当谈到尝试在全球范围内安装某些东西时,我会陷入困境。

到目前为止我为测试全局安装某些软件包做了什么:

  1. 创建了测试目录grunttest

  2. 在该目录中:

    npm install -g jshint

  3. 输出我可以看到:

     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. 如何解决此问题?
    4. 信息:

      我使用的是Windows机器Windows 7,使用cygwin作为shell。 尝试只是jshint(jshint someTestfile.js)当然不起作用。

      提前致谢,Meru

7 个答案:

答案 0 :(得分:196)

npm ERR! extraneous表示已安装软件包,但未在您的项目package.json中列出。

由于您列出了全球安装的软件包,因此它会给您带来许多无法忽略的错误,因为大多数全局安装的软件都不会出现在您的项目中。 s package.json

答案 1 :(得分:20)

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

3:要避免此无关错误,您可以使用选项--save运行或重新运行安装。这将自动更新package.json文件:

npm install -g jshint --save

或者需要使用"dependencies": {...}

手动更新package.json文件

答案 2 :(得分:4)

我通过在父包的文件夹中执行npm update来解决这个问题,该文件夹从列表中删除了一些无关的包,然后为剩下的几个包做了npm uninstall <package>

似乎已经有效,因为我这样做后没有错误。

答案 3 :(得分:3)

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

npm install -g packagename --save

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

我选择了删除本地解决方案然后全局安装的解决方案。

npm uninstall packagename
npm install -g packagename

这样我就不再有警告,也不会搞砸package.json文件。

答案 4 :(得分:2)

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

使用dependencies: { "my-module": "file:local-modules/mymodule" }语法时会发生这种情况,名称为“my-module”时出现拼写错误。

答案 5 :(得分:1)

我是我的情况,我看到了这个&#39; npm ERR!外来&#39;当我做了一个&#39; npm ls&#39;时,我的cygwin终端中的消息。经过大量的修修补补后,我认为这是一种全局损坏的设置。我在这里了解到以下观察结果:

  • &#39; npm ls&#39;根据您当前的文件夹位置提供不同的输出。
  • &#39; npm ls&#39;试图检测“node_modules”的存在。当前文件夹位置中的文件夹,并列出这些内容。不是全球性的!
  • 此外,如果当前文件夹包含&#39; node_modules&#39;还有一个package.json文件,其中包含较少的模块,然后显示错误。

我&#39; rm package.json&#39;和&#39; npm ls&#39;不再显示错误消息。所以我说,总是检查当前位置是否存在“node_modules”#39;文件夹和package.json文件,因为这些在检查中首先是优先级,如果缺少这些,检查将继续到父文件夹,依此类推,如果你修改了很多代码片段,那么你可能有散布在很多很多的node_modules文件夹和package.json文件中。这里没有任何东西真正被破坏,这与我们在进行J2EE Java开发/ eclipse IDE时或在我们必须使用regedit来更改Windows中的设置时的体验不同。

答案 6 :(得分:0)

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

enter image description here