npm windows全局安装导致npm错误!无关

kiz8lqtg  于 2022-12-19  发布在  Windows
关注(0)|答案(7)|浏览(230)

我正在网站“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)当然不工作。

eanckbw9

eanckbw91#

npm ERR! extraneous表示已安装软件包,但未在项目的package.json中列出。
由于您列出的是全局安装的软件包,因此会给予许多无关的错误,这些错误可以忽略,因为全局安装的大多数内容都不在项目的package.json中。

i5desfxk

i5desfxk2#

1 & 2:这意味着你没有在你的项目的package.json文件中列出jshint,但是它是全局安装的,所以这不是一个大问题。
3:要避免此无关错误,您可以使用选项--save运行或重新运行安装。这将自动更新您的package.json文件:

npm install -g jshint --save

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

qij5mzcb

qij5mzcb3#

我通过在父包的文件夹中执行npm update来解决这个问题,它从列表中删除了一些无关的包,然后对剩下的几个包执行npm uninstall <package>
似乎已经工作,因为我没有得到这样做后的错误。

ubbxdtey

ubbxdtey4#

我把所有的答案结合起来解决了,一开始我是全局安装包的。

npm install -g packagename --save

由于npm也在全局安装了这个包,但没有将其添加到本地package.json文件中,因此我必须对此做些什么。
我选择的解决方案是删除本地的,然后全局安装它。

npm uninstall packagename
npm install -g packagename

这样我就没有更多的警告,也不会弄乱package.json文件。

7kqas0il

7kqas0il5#

在我的情况下,我看到这个'npm错误!无关'消息在我的cygwin终端时,我做了'npm ls'.我认为这是某种全局损坏的设置后,有很多修补.我学到了以下观察:

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

我的“rm package.json”和“npm ls”不再显示错误消息。所以我说,总是检查当前位置是否存在“node_modules”文件夹和package.json文件,因为这些文件在检查中优先级最高,如果这些文件丢失,检查将继续到父文件夹等,如果你已经修补了很多代码片段,那么你可能已经分散了很多很多的node_modules文件夹和package.json文件。这里没有什么真正损坏的,不像我们在做J2EE Java开发/ eclipse IDE或者在我们必须使用regedit在Windows中更改设置的日子里的那些经历。

pu82cl6c

pu82cl6c6#

在我的例子中,这是因为它的package.json文件中的包名与依赖模块的package.json文件中列出的依赖名不同。我的错误,因为它是我创建的一个新模块,但很难发现,因为npm不会给予任何线索。
这发生在使用dependencies: { "my-module": "file:local-modules/mymodule" }语法时,名称“my-module”中有拼写错误。

xv8emn3q

xv8emn3q7#

这是因为您的package.json中没有您的包,如果添加了这个包,问题就解决了,请看下图:

相关问题