我正在网站“http://tech.pro/tutorial/1190/package-manager-an-introductive-guide-for-the-uninitiated-front-end-developer#front_end_developers”上尝试一些“食谱示例”。你现在不应该去那里看,但是我认为分享这个网站会很好。到目前为止一切都很好,直到它进入全球安装。
当谈到试图在全球范围内安装一些东西时,我会卡住。
- 到目前为止,我所做的测试是全局安装某个包:*
1.已创建测试目录grunttest
1.在该目录中: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!无关的...?
1.这是什么意思?
1.如何解决此问题?
信息:
我在Windows机器Windows 7上,使用cygwin作为shell。尝试只是jshint(jshint someTestfile.js
)当然不工作。
7条答案
按热度按时间eanckbw91#
npm ERR! extraneous
表示已安装软件包,但未在项目的package.json
中列出。由于您列出的是全局安装的软件包,因此会给予许多无关的错误,这些错误可以忽略,因为全局安装的大多数内容都不在项目的
package.json
中。i5desfxk2#
1 & 2:这意味着你没有在你的项目的package.json文件中列出jshint,但是它是全局安装的,所以这不是一个大问题。
3:要避免此无关错误,您可以使用选项
--save
运行或重新运行安装。这将自动更新您的package.json文件:或者需要使用
"dependencies": {...}
手动更新package.json文件qij5mzcb3#
我通过在父包的文件夹中执行
npm update
来解决这个问题,它从列表中删除了一些无关的包,然后对剩下的几个包执行npm uninstall <package>
。似乎已经工作,因为我没有得到这样做后的错误。
ubbxdtey4#
我把所有的答案结合起来解决了,一开始我是全局安装包的。
由于npm也在全局安装了这个包,但没有将其添加到本地package.json文件中,因此我必须对此做些什么。
我选择的解决方案是删除本地的,然后全局安装它。
这样我就没有更多的警告,也不会弄乱package.json文件。
7kqas0il5#
在我的情况下,我看到这个'npm错误!无关'消息在我的cygwin终端时,我做了'npm ls'.我认为这是某种全局损坏的设置后,有很多修补.我学到了以下观察:
我的“rm package.json”和“npm ls”不再显示错误消息。所以我说,总是检查当前位置是否存在“node_modules”文件夹和package.json文件,因为这些文件在检查中优先级最高,如果这些文件丢失,检查将继续到父文件夹等,如果你已经修补了很多代码片段,那么你可能已经分散了很多很多的node_modules文件夹和package.json文件。这里没有什么真正损坏的,不像我们在做J2EE Java开发/ eclipse IDE或者在我们必须使用regedit在Windows中更改设置的日子里的那些经历。
pu82cl6c6#
在我的例子中,这是因为它的
package.json
文件中的包名与依赖模块的package.json
文件中列出的依赖名不同。我的错误,因为它是我创建的一个新模块,但很难发现,因为npm不会给予任何线索。这发生在使用
dependencies: { "my-module": "file:local-modules/mymodule" }
语法时,名称“my-module”中有拼写错误。xv8emn3q7#
这是因为您的package.json中没有您的包,如果添加了这个包,问题就解决了,请看下图: