首页 文章

npm windows install全局导致npm ERR!外来

提问于
浏览
108

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

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

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

  • 创建了测试目录 grunttest

  • 在该目录中:

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,应该没问题,因为刚才说上次安装后资源没有被修改(几分钟前) .

Checking if the jshint exists with:

`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**

Questions:

  • 为什么我得到npm ERR!无关的......?

  • 这是什么意思?

  • 如何解决此问题?

Information:

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

Meru,提前谢谢

7 回答

  • 191

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

    npm install -g packagename --save
    

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

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

    npm uninstall packagename
    npm install -g packagename
    

    这样我没有更多的警告,也不会搞砸package.json文件 .

  • 20

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

  • 1

    我的情况,我看到这个'npm ERR!当我做'npm ls'时,在我的cygwin终端中发出了无关的信息 . 我认为这是一种全局损坏的设置,经过大量的修补 . 我在这里了解到以下观察:

    • 'npm ls'根据您当前的文件夹位置提供不同的输出 .

    • 'npm ls'尝试检测当前文件夹位置中是否存在'node_modules'文件夹,并列出这些内容 . 不是全球性的!

    • 此外,如果包含'node_modules'的当前文件夹也包含此处列出的较少模块的package.json文件,则会显示错误 .

    我是'package.json'和'npm ls'不再显示错误信息 . 所以我说,总是检查当前位置是否存在'node_modules'文件夹和package.json文件,因为这些文件在检查中优先排序,如果缺少这些文件,则检查继续到父文件夹,依此类推,如果你已经修改了很多代码片段,那么你可能已经分散了很多很多的node_modules文件夹和package.json文件 . 这里没有任何东西真正被破坏,不像我们在进行J2EE Java开发/ eclipse IDE时所经历的那些经历,或者在我们必须使用regedit来更改Windows中的设置时 .

  • 4

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

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

    npm install -g jshint --save
    

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

  • 0

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

    似乎有效,因为我这样做后没有错误 .

  • 3

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

    既然你会给你很多无关的错误,可以简单地忽略,因为全局安装的大多数东西都不会出现在你的项目中 package.json .

  • 1

    在我的情况下,这是因为其 package.json 文件中的包名称与依赖模块的 package.json 中列出的依赖项名称不同 . 我的错误,因为它提供了任何线索 .

    这种情况发生在使用 dependencies: { "my-module": "file:local-modules/mymodule" } 语法时,名称为"my-module"的拼写错误 .

相关问题