我是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,这应该没问题,因为刚才说上次安装后资源没有被修改(几分钟前)。
检查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**
问题:
信息:
我使用的是Windows机器Windows 7,使用cygwin作为shell。
尝试只是jshint(jshint someTestfile.js
)当然不起作用。
提前致谢,Meru
答案 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": {...}
答案 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; 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)