npm 창을 전역으로 설치하면 npm 오류가 발생합니다! 관계 없는


121

나는 grunt와 npm을 처음 사용합니다. 그래서 나는 ' http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developer#front_end_developers ' 사이트에서 "요리 책-예제"를 시도하고 있습니다. . 지금 거기를 볼 필요는 없지만 사이트를 공유하는 것이 좋을 것이라고 생각했습니다. 지금까지 글로벌 설치에 관해서는 훌륭합니다. (좋아요, 몇 가지 오류를 알아 내야했지만 이제는 npm으로 작업하고 있습니다).

전 세계적으로 무언가를 설치하려고 할 때 문제가 발생합니다.

지금까지 일부 패키지를 전역 적으로 테스트하기 위해 수행 한 작업 :

  1. 테스트 디렉토리 생성 grunttest

  2. 해당 디렉토리 내부 :

    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)

마지막 설치 이후 (몇 분 전) 리소스가 수정되지 않았기 때문에 괜찮을 것입니다.

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. 이 문제를 어떻게 해결할 수 있습니까?

정보:

나는 cygwin을 쉘로 사용하는 Windows 컴퓨터 Windows 7에 있습니다. jshint someTestfile.js물론 jshint ( ) 만 시도하면 작동하지 않습니다.

미리 감사드립니다, Meru

답변:


208

npm ERR! extraneous패키지가 설치되었지만 프로젝트의 package.json.

전역 적으로 설치된 패키지를 나열하기 때문에 전역 적으로 설치된 대부분의 항목이 프로젝트의 package.json.


1
안녕하세요! 답변 해주셔서 감사합니다. 이것은 또한 내가 "jshint"를 실행할 수 있어야한다는 것을 의미합니까, 맞습니까?
Meru 2014 년

옳은. 에서 jshint myfile.jsjshint를 실행 해야합니다 myfile.js.
Kyle Robinson Young

1
아 알겠습니다. Grunt를 사용하면 모든 것이 작업을 거치게됩니다. .NET grunt-contrib-jshintFramework에서 작업을 로드하고 구성 합니다 Gruntfile.js. 당신은 세계적으로 설치할 수있는 유일한 방법은 npm i grunt-cli -g당신이 실행에 액세스 할 수 있습니다 grunt를 실행하는 명령을 Gruntfile.js. 더 많은 정보는이 설명서를 참조하십시오 gruntjs.com/getting-started
카일 로빈슨 젊은

8
외부 라이브러리가 로컬 (전역이 아님)에 저장되어있는 경우 실행 npm prune하여 제거 할 수 있습니다.
krx

2
@KyleRobinsonYoung : 대답에서 이것을 언급하는 것은 어떻습니까. 당신은 사용되지 않는 모든 패키지를 제거 할 수 있습니다npm prune --your-env
geek_guy

21

1 & 2 : 프로젝트의 package.json 파일에 jshint가 나열되어 있지 않지만 전역 적으로 설치되어 있음을 의미합니다. 그래서 큰 문제는 아닙니다.

3 :이 불필요한 오류 를 방지하기 위해 옵션을 사용하여 설치를 실행하거나 다시 실행할 수 있습니다 --save. 그러면 package.json 파일이 자동으로 업데이트됩니다.

npm install -g jshint --save

또는 package.json 파일을 "dependencies": {...}


엄마의 경우에는 글로벌 중복 현지에서만 작동합니다
BG BRUNO

2
--save와 함께 작동하지 않습니다 -g. 글로벌 패키지 목록에는 package.json이 없습니다.
Guido Bouman

5

npm update목록에서 외부 패키지 중 일부를 제거한 다음 npm uninstall <package>나머지 몇 개 를 수행하는 상위 패키지의 폴더 에서이 문제를 해결했습니다 .

이 작업을 수행 한 후 오류가 발생하지 않으므로 작동 한 것 같습니다.


3

나는 모든 답을 결합하여 해결했습니다. 처음에는 패키지를 전역 적으로 설치했습니다.

npm install -g packagename --save

npm은이 패키지를 전 세계적으로 설치했지만 로컬 package.json 파일에 추가하지 않았으므로 이에 대해 뭔가를해야했습니다.

로컬 솔루션을 제거한 다음 전역으로 설치하는 솔루션을 선택합니다.

npm uninstall packagename
npm install -g packagename

이렇게하면 더 이상 경고가 표시되지 않고 package.json 파일을 엉망으로 만들지 않습니다.


Plus 100. 로컬에서 제거하고 전역 적으로 설치해야했습니다.
Collin Peters

1

내 경우,이 'npm ERR을 봤어! 내가 'npm ls'를했을 때 내 cygwin 터미널에 불필요한 '메시지가 나타납니다. 나는 이것이 많은 땜질을 한 후에 이것이 일종의 전 세계적으로 손상된 설정이라고 생각했습니다. 여기에서 다음과 같은 관찰을 배웁니다.

  • '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를 수행 할 때 또는 Windows에서 설정을 변경하기 위해 regedit를 사용해야하는 날 동안 경험 한 것과는 달리 여기서 실제로 손상되는 것은 없습니다.


1

제 경우에는 package.json파일 의 패키지 이름 package.json이 종속 모듈 의 에 나열된 종속성 이름과 동일하지 않았기 때문 입니다. 내 오류는 내가 만든 새 모듈이기 때문에 npm이 단서를주지 않기 때문에 찾기가 어렵습니다.

이것은 dependencies: { "my-module": "file:local-modules/mymodule" }"my-module"이름에 오타가 있는 구문을 사용할 때 발생했습니다 .


0

이는 패키지가 package.json에 없기 때문입니다. 추가하면 문제가 해결됩니다. 아래 이미지를 참조하십시오.

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.