[node.js] NPM : “npm 링크”모듈을 찾지 못한 후

NodeJS를위한 두 개의 모듈을 개발 aligatoraligator-methods입니다. 첫 번째는 이름이 지정 되고 두 번째는 . 두 번째는 첫 번째 작업에 달려 있습니다. 이 두 모듈을 동시에 개발 중이며 전역 링크를 원 aligator하므로 npm 레지스트리에있는 것처럼 사용할 수 있고 방금 전역 적으로 설치했습니다. 이를 수행하려면 NPM 문서에 사용해야한다고 나와 npm link있지만 작동하지 않습니다.

package.json모듈 파일 aligator:

{
  "name": "aligator",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "private": true,
  "directories": {
    "doc": "docs",
    "example": "examples",
    "test": "spec"
  },
  "scripts": {
    "test": "gulp jasmine"
  },
  "license": "MIT",
  "devDependencies": {
    "gulp": "^3.6.2",
    "gulp-jasmine": "^0.2.0",
    "gulp-jshint": "^1.6.1",
    "gulp-rename": "^1.2.0",
    "jasmine-node": "^1.14.3"
  },
  "dependencies": {
    "bluebird": "^1.2.4",
    "lodash": "^2.4.1",
    "mathjs": "^0.22.0"
  }
}

package.json모듈 파일 aligator-methods:

{
 "name": "aligator-methods",
 "version": "0.0.1",
 "description": "",
 "main": "index.js",
 "private": true,
 "directories": {
   "doc": "docs",
   "example": "examples",
   "test": "jasmine"
 },
 "scripts": {
   "test": "gulp jasmine"
 },
 "author": "",
 "license": "MIT",
 "devDependencies": {
   "gulp": "^3.6.2",
   "gulp-jasmine": "^0.2.0",
   "gulp-jshint": "^1.6.1",
   "gulp-rename": "^1.2.0",
   "jasmine-node": "^1.14.3"
 },
 "dependencies": {
   "lodash": "^2.4.1",
   "mathjs": "^0.22.0",
   "aligator": "^0.0.1"
 }
}

우선 모듈을 전역 적으로 연결했습니다.

$ cd ~/aligator
$ npm link
/usr/local/lib/node_modules/aligator -> /Users/roc/aligator

내가 실수하지 않았다면 이것은 내 모듈의 글로벌 참조를 생성 aligator했으며 이제 컴퓨터에서 원하는 모든 곳에서이 모듈을 사용할 수 있습니다.

그런 다음 다른 모듈로 이동하여 종속성을 설치하려고 시도했지만 다음과 같은 결과를 얻었습니다.

$ cd ~/aligator-methods
$ npm install
npm ERR! 404 404 Not Found: aligator
npm ERR! 404
npm ERR! 404 'aligator' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 It was specified as a dependency of 'aligator-methods'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.

npm ERR! System Darwin 13.2.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Users/roc/aligator-methods
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.16
npm ERR! code E404
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/roc/aligator-methods/npm-debug.log
npm ERR! not ok code 0

나는 그것을 직접 연결하려고 시도했다.

$ cd ~/aligator-methods
$ npm link aligator
/Users/roc/aligator-methods/node_modules/aligator -> /usr/local/lib/node_modules/aligator -> /Users/roc/aligator

그러나 그것도 작동하지 않았습니다.

무슨 일이 일어날 수 있는지에 대한 생각이 있습니까? 나는 Homebrew에 의해 만들어 졌기 때문에 노드npm의 설치와 관련이있을 수 있다는 것을 어딘가에서 읽었습니다. 그래서 가끔 사용해야하는데 sudo.



답변

NVM으로 인해이 문제가 발생하여 종속성에 대해 하나의 노드 버전을 실행하고 종속 항목에 대해 다른 버전을 실행했습니다.


답변

삭제 package-lock.json한 다음 npm install다시 실행 하면 문제가 해결되었습니다.


답변

문제는의 main속성이 package.json존재하지 않는 파일을 가리키는 것입니다. 여러 가지 이유로 문제가 발생할 수 있으므로 다른 답변을 확인하십시오.


답변

디렉토리 npm link에서 처음 실행할 때 aligator전역 node_modules 디렉토리에서 aligator. 그런 다음 디렉토리 npm link aligator에서 를 실행할 때 로컬에 설치된 node_modules에서 원본 소스로 aligator-methods링크 aligator합니다 (위의 예제에 표시된 출력). 이 작업이 완료되면 이미 “설치”되었으므로 더 이상 설치할 필요가 없습니다. npm link aligator명령 을 실행 한 후 어떤 오류가 표시 됩니까?

로컬 디렉토리에서 종속성을 설치하려는 경우 npm install대신 사용 을 시도 할 수 있습니다 . 예를 들면 :

$ cd ~ / aligator-methods
$ npm install ../aligator


답변

내 문제는 repo A가 사용 npm하고 repo B가을 사용 하고 있다는 것이 었 yarn으므로 yarn linkrepo B를 통해 npm link package-namerepo A로 가져 오기 위해 repo B에서 실행 해야했습니다 .


답변

이 문제의 내 버전을 수정합니다. npm v5.3.0에서는 node_modules다른 프로젝트에 연결하는 저장소에서 제거 했습니다.

npm v3 이후에는 모든 node_modules 종속성을 하나의 node_modules 디렉토리 (프로젝트에있는 하나)에 배치하여 최대한 구조를 평평하게 만들려고한다는 것을 발견했습니다 ( http://codetunnel.io/npm-5-changes-to-npm -링크 / ).


답변

나를 위해 일한 것은 다음과 같습니다.

  1. node_modules종속성 및 소비자 모듈 모두에서 삭제하십시오 .
  2. 운영 npm unlink --no-save [dependency-module]
  3. npm-link에 따라 2-link 명령으로 다시 연결

이제 게시되지 않은 모듈을 로컬에서 완전히 테스트 할 수 있습니다.

또한 강력하지는 않지만 게시되지 않은 모듈을 테스트하는 데 도움이되는 npm pack 명령이 있습니다.

npm- 팩