NPM: "npm link" 모듈을 찾을 수 없는 경우
는 NodeJS를 두 인데, 첫은 나는 노드입니다.JS를 위한 두 개의 모듈을 개발하고 있는데, 첫 번째 모듈은aligator
두 는 고두리번째그번째.aligator-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
하지만 그것도 효과가 없었습니다.
무슨 일이 일어나고 있는지에 대한 생각이 있습니까?나는 어딘가에서 그것이 아마도 내 노드와 npm 설치와 관련이 있을 것이라고 읽었습니다. 왜냐하면 그것은 홈브루에서 만들어졌기 때문이고 그래서 때때로 나는 사용해야 하기 때문입니다.sudo
그럴 것 같지는 않았지만 그들이 제안한 것을 시도해 보았지만 역시 효과가 없었습니다.
문제는 그것이main
의 package.json
존재하지 않는 파일을 가리키고 있습니다.여러 가지 이유로 인해 문제가 발생할 수 있는 것 같으니 다른 답변을 꼭 살펴보시기 바랍니다.
이 문제가 발생한 이유는 NVM으로 인해 종속성을 위한 노드 버전과 종속성을 위한 노드 버전을 실행하고 있었기 때문입니다.
입니다.package-lock.json
당시의npm install
저를 위해 다시 그 문제를 해결했습니다.
을 처음 할 때npm link
aligator
합니다. node_local 디렉토리에 대한 링크를 생성합니다.aligator
그면실때할행러를 할 때.npm link aligator
aligator-methods
, 크링을 연결합니다.aligator
로컬로 설치된 node_dll에서 원래 소스로 이동합니다(위의 예제에서 출력 참조).이 작업이 완료되면 이미 "설치"되었기 때문에 더 이상 설치할 필요가 없습니다.실행 후 표시되는 오류는 무엇입니까?npm link aligator
명령?
로컬 디렉터리에서 종속성을 설치하려는 경우 다음을 사용할 수 있습니다.npm install
를 들어 다음과 같습니다예:
~ / ~ /aligator-creator
설치 ..../ 치설/...al.../aligator
제 문제는 결국 A 레포가 사용하는 것이었습니다.npm
그리고 B가 사용하고 있던 것은yarn
그래서 나는 뛰어야만 했습니다.yarn link
통 그 것 끌 이 기 위 에 해 들 B어를 통해 .npm link package-name
A로.
제게 효과가 있었던 것은 다음과 같습니다.
- 를 합니다.
node_modules
종속성 및 전기 소비 장치 모듈 모두에서. - 려달을 합니다.
npm unlink --no-save [dependency-module]
- npm-link에 따라 2-link 명령으로 다시 연결합니다.
이제 게시되지 않은 모듈을 로컬에서 완전히 테스트할 수 있습니다.
또한 게시되지 않은 모듈을 테스트하는 데 도움이 되는 npm pack 명령도 있습니다.
다음 항목을 확인하십시오.main
package.json
.
이것이 패키지의 항목 역할을 합니다.이것은 저에게 오랜 시간이 걸린 작은 세부사항입니다.
의 내 합니다. 이문의내수니다. npm v5.3.0에제를 했습니다.node_modules
레포에서 다른 프로젝트로 연결하고 있었습니다.
저는 npm v3 이후에 그들이 구조를 최대한 평평하게 하기 위해 모든 node_dll 종속성을 하나의 node_dll 디렉토리(프로젝트에 하나씩)에 넣으려고 한다는 것을 알게 되었습니다(http://codetunnel.io/npm-5-changes-to-npm-link/) .
저도 비슷한 문제가 있었는데, 이 문제를 해결하기 위해 다음 단계를 수행해야 했습니다.
라이브러리에서:
- 를 문를생라다같으로 합니다.
peerDependencies
에 시대에package.json
에dependencies
또는devDependencies
예를 들어 나의 경우에는react
:
"peerDependencies": {
"react": "^16.8.6",
...
}
- 려달을
npm install
- 도관을나짓다니로 (습의경우서, a로)).
rollup -c
npm 스크립트)
내 메인 앱에서:
- 을 상대 있는로컬 프를트가라버변전에서 상대 경로가 합니다.
package.json
예: 예: 예: 예를 들어.
"dependencies": {
"my-library": "file:../../libraries/my-library",
...
}
더하다
resolve.symlinks = false
메인 의 웹팩 으로 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ더하다
--preserve-symlinks-main
그리고.--preserve-symlinks
나에게package.json
시작( " 크립트시예작스")
"scripts": {
"build": "set WEBPACK_CONFIG_FILE=all&& webpack",
"start": "set WEBPACK_CONFIG_FILE=all&& webpack && node --preserve-symlinks-main --preserve-symlinks dist/server.js",
}
- 려달을
npm install
- 려달을
npm run start
이것이 오래된 게시물이라는 것을 알지만, 저의 경우 문제는 제가 패키지 디렉터리 이름을 바꿨다는 것입니다.package.json
"name"은 여전히 이전 이름으로 설정되었습니다.
예를 들어, 나의 디렉토리 이름은package-name
하지만 실제 "이름"은 패키지에서 발견되었습니다.json은package-name-b
".
달리는 yarn link
"package-name-b"라는됩니다.
그리고 나서 나는 도망치려고 했습니다.yarn link package-name
디렉터리 이름을 사용하고 있었기 때문입니다.가 을바꿨으로 때.yarn link package-name-b
효과가 있었습니다.
저의 경우 로컬 패키지의 버전 번호를 0.1.0에서 0.0.1로 줄였을 때 이러한 상황이 발생했습니다.그리고 제가 이 패키지에 링크한 프로젝트에서는 여전히 상위 버전 번호를 사용하고 있었습니다.종속성 업데이트 중package.json
고쳤습니다.
tsconfig 모듈 해상도 확인
나처럼 tsconfig, tsconfig를 .module
es5
esnext
니면뭔가면, 러그아,.moduleResolution
기본값이 변경되었을 수 있습니다.
없이.moduleResolution
를 " packagesnode"를 확인할 수 . node_typescript를 node_node로 설정합니다.
컴파일러 옵션 페이지에서 기본값이 다음 값에 따라 어떻게 달라지는지 읽을 수 있습니다.module
그들의 채무 불이행이 차례로 의존하는.target
명시적으로 할 수 ."노드"로 명시적으로 설정할 수 있습니다.
사소한 일이지만 언급할 가치가 있습니다.
npm link <module-name>
다음 이후에 실행해야 합니다. npm install
한 경우)는 필요한습니다에에서 실행되었습니다.<module-name>
폴더를 누릅니다.
- 즉, 링크된 모듈이 이미 존재하지 않는 한
<module-name>
폴의package.json
연결된 모듈이 실제로 설치된다는 것을 의미하기 때문에 이 경우에는 순서가 중요하지 않습니다.npm install
(여기에 설명된 바와 같이), 그리고 다음을 사용하여 링크할 필요가 없습니다.npm link
이것은 이 질문의 주제가 아닙니다.
는 그는이 때문입니다.npm link <module-name>
패키지에 링크 바로 가기, Windows의 에 를 실행하면 됩니다.npm install
나중에 삭제만 하면 됩니다.
요약하면, 다음은 실행 순서입니다.
- 교체하기 »
aligator
와 함께exporter
그리고.aligator-methods
와 함께importer
하기
⚡ cd exporter
⚡ npm install <-- if needed, execute here, though it can also be executed after `npm link`
⚡ npm link
⚡ cd importer
⚡ npm install <-- if needed, must be executed here
⚡ npm link exporter
- 보너스: 수출업체 및 수입업체의 전체 미니멀 ES 모듈 예는 여기에서 확인할 수 있습니다.
도망친npm run build
로컬 패키지(의존성)와 나에게 효과가 있음
저는 동일한 문제에 직면하여 위에서 언급한 모든 해결책을 시도했지만, 안타깝게도 어느 것도 작동하지 않았습니다. 가지 조사를 한 에 저는 제가 했던 노드 을 알게 되었습니다.npm link [package-name]
때.npm ls -g --link
@_@ @_@ XD 그는일지확고인했다작니습동했치하과버노!
, 이 문제를 되었습니다.dist/cjs/index.js
main 파일이 . 중입니다.npm run build
문제를 해결했습니다.
peerDependency를 사용하는 경우
는 두 패키지를 stejs
,그리고.stejs-loader
.stejs-loader
가지다stejs
peerDependency
내가 뛰었을 때npm link stejs-loader
그리고.npm link stejs
내 프로젝트에서 나는 오류를 받았습니다.stejs-loader
수 없음 ㅠㅠㅠㅠㅠstejs
저는 그것을 운영해서 고쳤습니다.npm link stejs
에의 에.stejs-loader
.
수 . 를 잊어버려서요. 단순히 추가하는 것을 잊어버렸기 때문입니다../
수준의 내 모듈 상위모듈내보내로기최준의수▁in▁exports▁my.index.ts
파일 이름:
export * from './utilities'
그것을 알아내는 데 시간이 좀 걸렸습니다.
언급URL : https://stackoverflow.com/questions/24550515/npm-after-npm-link-module-is-not-found
'programing' 카테고리의 다른 글
PowerShell 4.0을 사용하여 변수 입력에서 공백 제거 (0) | 2023.08.02 |
---|---|
BIGINT UNSIGNED 값이 범위를 벗어났습니다. (0) | 2023.08.02 |
Angular 6 Unit Tests: All\nReferenceError: 뒤에 오류가 발생했습니다.변수를 찾을 수 없음: $가 던져졌습니다. (0) | 2023.08.02 |
Swift에서 장치 방향 가져오기 (0) | 2023.08.02 |
마지막으로 삽입한 Oracle IDENTITY 검색 (0) | 2023.08.02 |