Yarn: git + ssh 패키지 설치가 작동하지 않는 것 같습니다.

에 만든 2016년 10월 05일  ·  103코멘트  ·  출처: yarnpkg/yarn

OP의 참고 사항 :이 정확한 문제가있는 경우에도 댓글없이 찬성 해주세요.


_feature_를 요청하거나 _bug_를 신고 하시겠습니까?

곤충

현재 행동은 무엇입니까?

yarn install v0.14.0
info No lockfile found.
[1/4] 🔍  Resolving packages...
error Couldn't find package "<package>" on the "npm" registry.

현재 동작이 버그 인 경우 재현 단계를 제공하십시오.

"devDependencies": {
    "license-builder": "git+ssh://[email protected]/fishrock123/<package>.git",
}

예상되는 동작은 무엇입니까?

일반 설치

node.js, yarn 및 운영 체제 버전을 언급하십시오.

Node.js : v6.6.1-pre
원사 : v0.14.0 ( master )
운영체제 : OSX 10.10.5

cat-bug

가장 유용한 댓글

컨텍스트를 위해 NPM의 문서에서 :

npm install <git remote url>:

호스팅 된 git 공급자에서 패키지를 설치하고 git로 복제합니다. 먼저 https (github with git)를 통해 시도하고 실패하면 ssh를 통해 시도합니다.

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>]

<protocol>git , git+ssh , git+http , git+https 또는 git+file 입니다. <commit-ish> 가 지정되지 않은 경우 master 가 사용됩니다.

또한 <commit-ish> 는 매우 다양한 분해 가능한 값의 배열입니다.

commit 개체 또는 commit 개체에 대해 재귀 적으로 역 참조 할 수있는 개체입니다. 다음 모든 커밋 ishes 같습니다 commit 오브젝트하는 tag 개체가있는 포인트 commit 오브젝트하는 tag 오브젝트하는 포인트 tag commit 개체 등을 가리키는 tag 개체

참고 : 이러한 git 원격 URL 설치는 GitHub / GitLab / etc뿐만 아니라 서버 인증을 위해 SSH 키를 사용하는 공개 및 비공개 git 서버 인스턴스 모두에서 작동하도록해야합니다. 회사가 내부적으로 관리되는 모든 종속성 (또는 SSH를 통해 액세스되는 개인 GitHub 저장소)에 대해 사내 로컬 git 서버를 사용하는 시나리오를 상상할 수 있습니다. 현재 yarn 는 이러한 _ 상대적으로 일반적인 _ 사용 사례를 수용하도록 설정되지 않았습니다.

재현 사례를 설정하는 가장 쉬운 방법은 Yarn을 사용하여 비공개 GitHub 저장소에서 패키지를 설치하는 것입니다.

모든 103 댓글

내가 축 어적으로 사용할 수있는 재현이 있습니까? 이것을 재현하는 데 문제가 있습니다.

아뇨, 죄송합니다.

실제로 내 개인 github에서 가져온 것이 아닙니다. "git+ssh://[email protected]/<org>/<package>.git"

리포지토리는 비공개이며 읽기 / 쓰기 액세스 권한이 있습니다. (내 github 계정에 등록 된 SSH 키를 통해 액세스합니다.)

어떻게 든 얻을 수있는 추가 로그 출력이 있습니까?

나는 이것이 하나 이상의 그러한 식별자로 발생한다고 언급 할 것입니다.

최소 재현 :

{
  "name": "x",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "devDependencies": {
      "eslint-config-radweb": "git+https://[email protected]/radweb/eslint-config-radweb.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

차이가 있다면 패키지는 레지스트리에 없습니다.

git 태그를 지정할 때도 오류가 발생합니다 (npm에서 허용됨).

스 니펫 예 :

...
  "react-quill": "git+https://[email protected]/alexkrolick/react-quill.git#v2.0.1",
...

나는 또한 이것을 # 621 얻는다

미묘한 차이가 있거나 git 태그의 필요한 경우를 추가하는

git + ssh로 _specific commit hash_를 설치하려고합니다. NPM 기본 클라이언트는이를 지원합니다.

# 573, # 633 및 # 639가 관련되어있는 것 같습니다.

컨텍스트를 위해 NPM의 문서에서 :

npm install <git remote url>:

호스팅 된 git 공급자에서 패키지를 설치하고 git로 복제합니다. 먼저 https (github with git)를 통해 시도하고 실패하면 ssh를 통해 시도합니다.

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>]

<protocol>git , git+ssh , git+http , git+https 또는 git+file 입니다. <commit-ish> 가 지정되지 않은 경우 master 가 사용됩니다.

또한 <commit-ish> 는 매우 다양한 분해 가능한 값의 배열입니다.

commit 개체 또는 commit 개체에 대해 재귀 적으로 역 참조 할 수있는 개체입니다. 다음 모든 커밋 ishes 같습니다 commit 오브젝트하는 tag 개체가있는 포인트 commit 오브젝트하는 tag 오브젝트하는 포인트 tag commit 개체 등을 가리키는 tag 개체

참고 : 이러한 git 원격 URL 설치는 GitHub / GitLab / etc뿐만 아니라 서버 인증을 위해 SSH 키를 사용하는 공개 및 비공개 git 서버 인스턴스 모두에서 작동하도록해야합니다. 회사가 내부적으로 관리되는 모든 종속성 (또는 SSH를 통해 액세스되는 개인 GitHub 저장소)에 대해 사내 로컬 git 서버를 사용하는 시나리오를 상상할 수 있습니다. 현재 yarn 는 이러한 _ 상대적으로 일반적인 _ 사용 사례를 수용하도록 설정되지 않았습니다.

재현 사례를 설정하는 가장 쉬운 방법은 Yarn을 사용하여 비공개 GitHub 저장소에서 패키지를 설치하는 것입니다.

다음 소스 문자열을 지정하는 경우 :

"devDependencies": {
    "license-builder": "ssh://github.com/<user>/<package>",
}

다음은 SSH를 통해 밝혔다 저장소를 복제하는 시도 않지만, GitHub의이 같은 로그인에 클라이언트를 기대하기 때문 "권한이 (공개 키)를 거부되었습니다"와 함께 실패 git 사용자,이 경우 로컬 계정 사용자는 기본적으로 사용 .

git@ 를 지정하여 git이 GitHub에 git 로 로그인하도록 강제하면 다음과 같이 실패합니다.

error Couldn't find any versions for <package> that matches ssh://[email protected]/<user>/<package>.

따라서 거의 작동하지만 사용자 이름 지정을 지원하지 않습니다. 로컬 계정 사용자의 이름이 git 인 경우 실제로 성공할 것입니다.

~/.ssh/config 파일에 다음을 추가하는 경우 :

Host github.com
        User git

기본적으로 git 사용자를 사용하도록 SSH를 통해 github.com에 대한 모든 로그인을 강제 할 수 있습니다. 그러면 ssh://github.com/<user>/<package> 소스 형식을 사용할 때 yarn이 개인 저장소에서 복제 할 수 있습니다.

git 참조 저장소 (로컬 gitlab EE 인스턴스를 가리킴)를 사용하는 것은 우리 워크 플로의 강력한 부분입니다. : cry :
또한 "before merge and npm publish"패키지 (예 : http-proxy ...)를 포크하고 가리키는 데 매우 유용합니다.

안녕하세요.

~ / .ssh / config 파일에 다음을 추가하는 경우 :

하지만 내 구성에는 이미 github에 대한 ssh 인증 자격 증명이 있으므로 개인 저장소에 액세스 할 수 있습니다. 이 해결 방법은 공용 저장소에서만 작동합니다.

@milosivanovic @ntucker 실제로 이것은 내 특정 경우에서 작동했습니다. 시작할 ssh 구성 파일이 없었습니다.

@kblcuk 아, @milosivanovic 은 다른 문제로

@ntucker 명시된 해결 방법은 개인 저장소에 대한 것입니다. 이미있는 경우 Host github.com 에서 항목 ~/.ssh/config , 다음 추가 User git 하면 다음과 같은 소스 문자열을 지정할 때 복제 할 수 있다는 항목과 실에 ssh://github.com/<user>/<package> , 즉 "git +"및 사용자 지정 없음.

@milosivanovic github는 ssh 인증을 수행하기 위해 내 사용자 이름을 어떻게 알 수 있습니까?

@ntucker SSH를 통해 통신 할 때 GitHub는 사용자 "git"로 서버에 로그인 할 것으로 예상합니다. 일반적인 GitHub 사용자 이름으로 로그인하려고하면 인증이 실패합니다. SSH를 통한 GitHub는 사용자 이름이 아닌 공개 키로 구분합니다. 참조 : https://help.github.com/articles/testing-your-ssh-connection/

많은 사람들이이 기능을 인식하지 못하기 때문에 언급하려고합니다. GitHub의 경우 yarn 잘 작동하는 tarball URL에 의존 할 수도 있습니다. 더 빨리 설치합니다.

https://github.com/user/repo/tarball/branch

@milosivanovic 불행히도이 해결 방법은 다음 형식의 내부 URL에 대해 작동하지 않습니다.
git+ssh://[email protected]:team-name/repo.git

초기 저장소를 ssh://source.com/team-name/repo.git 형식으로 변경하면 ...

... 그런 다음 초기 종속성에서 작동하지만 첫 번째 내부 종속성이 가리키는 다른 모든 내부 종속성은 모두 해당 형식이므로 중단됩니다.

모든 리포지토리 및 종속성의 모든 URL을 해결 방법 형식으로 변경하지 않고 (그런 다음 npm에서 정상적으로 작동하지 않는 문제를 처리해야 함) 이에 대해서도 약간 차단됩니다.

@ 131이 지적했듯이 이것은 팀이 내부적으로 npm을 사용하는 주요 방법입니다 (내가 알고있는).

그래도 그 외에도 멋지다!

@brokenalarms ssh://host.com/user/repo 형식은 npm과 완전히 역 호환되지만 (예상 사용자가 SSH 구성 파일에 지정되어있는 한) 그럼에도 불구하고 공정한 요점입니다.

나는 .. 그래서 그들은 ssh 키를 기반으로 어떤 사용자를 알고 있습니까?

@ntucker

나는 같은 문제가 있었지만 ~ / .ssh / config에 User git을 추가하는 ntucker의 솔루션이 나를 도왔습니다. 적어도 개발 환경에서는. 지금 AWS EB에 배포를 시도합니다.)

git+ssh://[email protected]:<org>/<repo>yarn 에서 작동하지 않고 https://github.com:<org>/<repo> 변경해도 작동하지만 여전히 _NPM _을 사용하는 CI 서버에서는 실패합니다.

이 해결 방법은 다음과 같은 도움이되었습니다.

  1. 내 개인 저장소 URL을
git+ssh://git@host/user/private-repo.git 

...에

ssh://host/user/private-repo.git
  1. ~ / .ssh / config에 사용자 git을 추가했습니다.
Host bitbucket.org
    User git

Host github.com
    User git

해결 방법이 bitbucket에서 작동하는지 확인한 사람이 있습니까?

@tgarbiak- 예, 저는 bitbucket을 사용하고 있습니다.

BitBucket을 사용하여 ~ / .ssh / config에 다음을 추가했습니다.

Host stash.company.com
    port 7999
    User shawn

이 패키지를 추가하기 위해 원사를 사용했습니다.

yarn add ssh://stash.company.com:7999/~user/package.git

npm install 실행하면 제대로 작동하지만 yarn install 실행하면 다음 오류가 발생합니다.

error TypeError: Cannot read property 'endsWith' of undefined
    at removeSuffix (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/lib/util/misc.js:42:14)
    at Function.parseRefs (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/lib/util/git.js:447:55)
    at /Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/lib/util/git.js:376:24
    at next (native)
    at step (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
    at /Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:20
    at run (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/core-js/library/modules/es6.promise.js:87:22)
    at /Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/core-js/library/modules/es6.promise.js:100:28
    at flush (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/core-js/library/modules/_microtask.js:18:9)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

예, 이전에 언급 한대로이 해결 방법이 작동합니다.

요점은 50+
모든 향후 사용자가 이제 추가로
ssh 구성 파일을 준비하여 yarn 또는
안타깝게도 기존 npm 설정은 옵션이 아닙니다.

2016 년 10 월 12 일 수요일 오전 3:47 Sven Varkel [email protected] 은 다음과 같이 썼습니다.

이 해결 방법은 다음과 같은 도움이되었습니다.

  1. 내 개인 저장소 URL을 git + ssh : //git@host/user/private-repo.git 에서 변경
    ...에
    ssh : //host/user/private-repo.git
  2. ~ / .ssh / config에 사용자 git을 추가했습니다.
    ``
    bitbucket.org 호스트
    사용자 git

호스트 github.com
사용자 git


당신이 언급 되었기 때문에 이것을 받고 있습니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253180666 또는 음소거

https://github.com/notifications/unsubscribe-auth/AHC8CnUaBP_B_FL_AX1xL5FUrEWR-rnPks5qzLrTgaJpZM4KO4Cm
.

@diorman & 이것을 읽는 사람 : 소스 제어의 package.json 파일에 github 토큰을 체크인하지 않는 것이 좋습니다.

@jsdnxx 이것을 지적 해 주셔서 감사합니다. 방금 비공개 종속성을 위해 package.json에 토큰이 이미있는 큰 비공개 프로젝트에 뛰어 들었습니다. 당신의 조언을 따를 것입니다. 다시 한 번 감사합니다

브랜치의 경우 https://github.com/yarnpkg/yarn/issues/513#issuecomment -253059522의 tarball 해결 방법이 캐싱으로 인해 작동하지 않는 것 같습니다. Yaska/keystone#yaska-build 를 설치할 패키지 이름으로 사용하고 잘못된 커밋을 사용하고 https://github.com/Yaska/keystone/tarball/yaska-build 때 여전히 잘못된 커밋을 사용합니다. npm 는 올바르게 처리합니다.

관련 메모에서 yarn link 개인 리포지토리 종속성을 로컬로 ed했다면 yarn은 해당 종속성이 npm 레지스트리에 있는지 확인하지 않아야하지만 현재이 경우에는 이 스레드에 언급 된 해결 방법.

제안 된 ~ / .ssh / config 구성은 패키지 해결을 중단하므로 작동하지 않습니다. 이 문제를 해결하는 PR이 곧 병합되고, 그렇지 않으면 좋은 NPM으로 돌아갑니다.

gitlab의 해결 방법은 다음 형식을 사용하는 것입니다.

{
    "PROJECT": "http://gitlab.com/NAMESPACE/PROJECT/repository/archive.tar.gz?ref=BRANCH_OR_TAG"
}

개인 저장소에서도 작동하며 Gitlab 개인 액세스 토큰을 사용하십시오 .

{
    "PROJECT": "http://gitlab.com/NAMESPACE/PROJECT/repository/archive.tar.gz?ref=BRANCH_OR_TAG&private_token=TOKEN"
}

@Webysther-@ jsdnxx가 말했듯이 :

소스 제어의 package.json 파일에 github 토큰을 체크인하지 않는 것이 좋습니다.

GitLab 또는 다른 개인 토큰에도 동일하게 적용됩니다.

Private Token 는 param 전용으로, 최신 버전의 Gitlab에서 다중 액세스 토큰을 관리 할 수 ​​있습니다.
원사에 git + ssh를 사용하고 싶습니다 ...

Gitlab 문서에서 :

개인 액세스 토큰

GitLab API에 액세스해야하는 사용하는 각 애플리케이션에 대해 개인 액세스 토큰을 생성 할 수 있습니다.

개인 토큰

개인 토큰은 인증없이 애플리케이션 리소스에 액세스하는 데 사용됩니다.

나는 코드를 보았고 일단 git repo가 ​​된 것 같습니다.
커밋 해시가 더 이상 확인되지 않으므로 분기를 추적 할 수 없습니다.

이것이 올바른 평가입니까? 그렇다면 다른 평가에 속합니까?
발행물?

2016 년 10 월 14 일 금요일 오전 6:52 Webysther Nunes [email protected]
썼다 :

Private Token은 Gitlab이 관리 할 수있는 최신 버전의 param 전용입니다.
다중 액세스 토큰.
원사에 git + ssh를 사용하고 싶습니다 ...

Gitlab 문서에서 :
개인 액세스 토큰

사용하는 각 애플리케이션에 대해 개인 액세스 토큰을 생성 할 수 있습니다.
GitLab API에 액세스해야합니다.
개인 토큰

비공개 토큰은 다음없이 애플리케이션 리소스에 액세스하는 데 사용됩니다.
입증.


댓글을 달았 기 때문에 수신 한 것입니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253709157 또는 음소거

https://github.com/notifications/unsubscribe-auth/AADWlhxxjS7Kl1wt_Wm6UG1Q_7X86D7oks5qzwqYgaJpZM4KO4Cm
.

@wmertens 아니요, 버전은 yarn.lock 안에 잠겨 있습니다. yarn upgrade 사용해보기

@Webysther 아아, yarn upgrade 는 차이를 만들지 않습니다. 이전 커밋을 계속 사용합니다. 나는 브랜치가 강제 푸시되었다는 것을 주목해야하지만, 얀이 주어진 태그와 일치하는 커밋을 찾아서 설치해야하기 때문에 그게 중요하지 않다고 생각합니다.

실이 올바른 커밋을 가져 오도록 강제하는 해결 방법을 찾았습니다.

~/.yarn-cache 에서 패키지를 제거한 다음 yarn upgrade 를 실행합니다.

다시 가져와야 할 일이 있습니다. yarn upgrade 에서 git repos의 커밋을 확인하는 것이 잘못 되었습니까?

원사 업그레이드가 새로운 git 커밋을 확인해야한다는 것이 옳다고 생각하지만 사용자 홈 디렉토리에 캐시되지 않고 프로젝트 별 버전이어야합니다. 하지만 그것은 또한 제 생각에 별도의 버그입니다

우리 프로젝트에는 수백 개의 package.json 항목이 있습니다.
"[name]": "[email protected]:[team]/[project].git"
동일한 오류가 표시됨

이 문제는 PR # 971에 의해 수정됩니까?

@BryanCrotaz 아니요, 완전한 해결책이 아닌 것 같습니다. GitHub로 제한되는 것 같습니다. 비공개 저장소는 여전히 문제입니다 (예 : git+ssh://[email protected]:user/project.git#d6c5789 )

편집 : 같이, 아래 @bdougherty 지적 git+ssh://[email protected]/user/project.git#d6c5789 로, / 대신 : , 사용자가 이전 작업을 수행합니다.

+1

URL 형식을 다음에서 변경하여이 문제를 해결할 수있었습니다.

git+ssh://git<strong i="6">@host</strong>:org/repo.git

...에

git+ssh://git@host/org/repo.git

두 형식 모두 npm에서 유효하며 유일한 문제는 모든 종속성이 해당 형식을 사용해야한다는 것입니다.

@kittens 나는 이것이 ( git+ssh://git@host/org/repo.git ) 지금 나를 위해 작동한다고 생각합니까?

원사 : v0.16.1
노드 : v6.9.1


나는 git+ssh://git<strong i="13">@host</strong>:org/repo.git 시도하지 않았지만 url.parse(): 완전히 무시하는 것 같지 않으므로 제거해야 할 수도 있습니다.

> url.parse('git+ssh://[email protected]:org/my-repo.git')
Url {
  protocol: 'git+ssh:',
  slashes: true,
  auth: 'git',
  host: 'github.com',
  port: null,
  hostname: 'github.com',
  hash: null,
  search: null,
  query: null,
  pathname: '/:org/my-repo.git',
  path: '/:org/my-repo.git',
  href: 'git+ssh://[email protected]/:org/my-repo.git' }

아마도 https://github.com/yarnpkg/yarn/pull/934가 실수로 이것을 고쳤습니까?

@ Fishrock123 yarn v0.16.0 git + ssh 패키지 설치가 작동하는 것을 확인할 수 있습니다.
v0.13.0에서는 git + ssh 패키지의 경우 error Couldn't find package "<package>" on the "npm" registry. 에서 일관되게 실패했습니다.

@ Fishrock123 확인했습니다. 여기에서도 지금 작동합니다.

예, # 934는이 문제를 해결하기위한 것입니다. :)

그러나 다음 형식은 작동하지 않습니다. git+ssh://git<strong i="6">@host</strong>:org/repo.git ( : 구분 기호 사용)

: 구분 기호 지원이 언제 제공 될지에 대한 정보가 있습니까?

나는 뭔가를 작업하고 있었지만, 몇몇 엣지 케이스를 먼저 할 기회가 없었습니다. 아무도 나를 이기지 않으면 다음 주에 그것을 얻으려고 노력할 것입니다.

그래도 여전히 문제가 있지만 약간 다를 수 있습니다. yarn add git+ssh://[email protected]/group/foo.git#0.0.4 단일 패키지를 설치할 수 있으며 크게 작동합니다. 그런 다음 동일한 프로젝트 yarn add git+ssh://[email protected]/group/bar.git 다른 하나를 설치하려고하는데 갑자기 Couldn't find package "group-foo" on the "npm" registry.

버전 0.16을 사용하고 있습니다. 차라리 이것으로 새로운 이슈를 만들어 볼까요?

편집 : yarn.lock 괜찮아 보이는 것을 추가하고 싶을 수도 있습니다 ...

"git+ssh://[email protected]/group/foo.git#0.0.4":
  name group-foo
  version "0.0.4"
  resolved "git+ssh://[email protected]/group/foo.git#6e25bb42e1725b260d4f1c95582c18aea73e5f5c"

Edit2 : 실제로 package.json에서 문제가 될 수 있습니다. 처음 설치 한 후 다음과 같이 보입니다. 분명히 yarn.lock 동안 프로토콜을 삭제했습니다. 그래서 나는 그것을 찾을 수 없기 때문에 대신 npm으로 보입니다.

"dependencies": {
  "group-foo": "gitlab.com/group/foo.git#0.0.4"
}

+100

v0.16.1로 업데이트하고 git+ssh://git@host/org/repo.git 구문을 사용하면 문제가 해결되었습니다 (참고 : git+ssh://git<strong i="6">@host</strong>:org/repo.git 구문에서는 여전히 작동하지 않음).

요점은 기존 package.json 파일을 지원하는 것입니다. 그렇지 않으면 마이그레이션이 어렵고 테스트를위한 이중 실행이 불가능합니다.

yarn 0.16.1 를 사용하여 git + ssh 구문으로 개인 저장소를 사용할 수있었습니다. 또한 git @ 사용자를 올바르게 사용했습니다.

@fermuch 그리고 예를 들어 실행할 수 있습니다. yarn ls 설치 후? package.json 은 (는) 어떻게 생겼습니까? 비공개 저장소에 대한 URL이 동일하거나 어떻게 든 변경 되었습니까?

@FredyC 내 출력 yarn add :

yarn add git+ssh://[email protected]/foobar/my-private-package.git
yarn add v0.16.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning Unmet peer dependency "whatwg-fetch@^1.0.0".
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency
└─ [email protected]

my-private-package 에서 node_modules my-private-package 삭제 후 실행되었습니다.
yarn addnode_modules 내부의 파일을 올바르게 볼 수 있습니다.

Yarn ls 출력 :

error Couldn't find any versions for my-private-package that matches github.com/foobar/my-private-package.git. Possible versions: 0.1.4

패키지가 npm 레지스트리에없고 github의 패키지 버전이 2.1.3 이므로 0.1.4 제공하는 이유를 잘 모르겠습니다.

편집하다

또한 이것이 내 yarn.lock 에 추가되었습니다.

"git+ssh://[email protected]/foobar/my-private-package.git":
  name my-private-package
  version "2.1.3"
  resolved "git+ssh://[email protected]/foobar/my-private-package.git#99186dc139e13a1420e56288efd02fd0b3158aa7"

@fermuch 그래 나는 거기에 똑같은 문제가 있습니다. 지금 여기에 다른 패키지를 추가하려고하면 (npm에서 하나라도) 실패 할 것이라고 거의 확신합니다. 나는 이미 이것에 대해 분리 된 문제를 만들었습니다 ... # 1312

여기에도 동일한 문제가 있지만 ssh가 아닌 공개 URL이 있습니다.

  "devDependencies": {
    "code": "2.x.x",
    "hapi": "10.x.x",
    "lab": "10.x.x",
    "k7": "[email protected]:thebergamo/k7.git#v1.5"
  },

안녕하세요,

이 문제는 보유한 노드 버전과도 관련이 있음을 확인했습니다.

"git + ssh : //[email protected]/ "형식을 사용하고 있습니다 /.git #". 저는 OSX 및 CentOS 7에서 개발을하고 있습니다. 최신 버전의 노드 4 (v4.6.1) 및 노드 6 (v6.9.1)에서는 yarn이이 형식에서 문제없이 작동한다는 것을 발견했습니다. 이전 버전의 노드에서는 4 (v4.4.5) OSX에서는 작동하지만 CentOS 7에서는 작동하지 않습니다. 특히 yarn이 리포지토리를 다운로드하려고 할 때 영구적으로 중단됩니다. 동일한 문제가 발생하는 경우 최신 버전의 노드 4 또는 6을 실행하고 있는지 확인하십시오.

kcormier와 관련하여 4.6.1 노드와 6.9.1 노드를 모두 시도했지만 어느 쪽도 SSH를 통해 특정 태그가 지정된 저장소 버전을 찾을 수없는 문제를 해결하지 못했습니다.

실패한 형식은 다음과 같습니다.

git+ssh://[email protected]:<username>/<project>.git#<tag>

태그와 일치하는 버전을 찾을 수 없다는 오류가 여전히 발생합니다 (npm에서 잘 작동 함).

도메인 뒤의 콜론을 슬래시로 변경하면 제대로 작동합니다. 이상 하죠?

@alanhogan 도메인 뒤의 콜론을 슬래시로 변경하면 제대로 작동하지만 패키지에 다른 git + ssh 종속성이있는 경우 설치중인 라이브러리 / 패키지의 package.json에서 변경해야합니다. . 또 다른 문제는 콜론을 슬래시로 변경하더라도 특정 커밋이나 분기를 참조하려고하면 오류가 발생한다는 것입니다.

나는 브랜치와 태그를 언급하는 데 성공했습니다. 노드 6.9.1을 사용하고있었습니다.

그러나 예, 재귀 문제는 현실입니다. 이론적으로는 우리 자신의 개인 모듈 만 영향을 받기 때문에 그리 나쁘지는 않습니다.

@alanhogan 그래 나도 같은 문제에 직면하고 있습니다.

위의 수정은 제 경우에는 작동하지 않는 것 같습니다. 내 저장소에서 공식 Npm 패키지를 분기했으며 내 저장소의 URL을 제공하면 : 대신 /를 사용하더라도 yarn이 공식 저장소를 해결합니다. (공식 : https://github.com/TheLarkInn/angular2-template-loader, 광산 : https://github.com/Krisa/angular2-template-loader). 해결 방법을 찾을 수 없습니다 (당시 Npm을 사용하는 것 외에).

버전이 지정된 종속성에서 tarball 종속성으로 전환하려면 yarn cache clean 가 있어야 실제로 tarball을 새 node_module (Node v6 LTS 및 yarn v0.16.1)으로 압축 해제합니다.

많은 개발자들이이 투표에 찬성했습니다. 우리가 도울 수있는 방법이 있습니까?

@ f-sign은 우리 팀에서 작업하고 있습니다. 군대에서 돕고 싶은 게 있나요, Flávio?

@FredyC에 의해 설명 된 바와 같이이 문제의 한 가지 중요한 부분은 package.json의 불일치 및 yarn.lock 것 같다 다음 package.json는 포함되어 있지 않습니다 git+ssh://git@ 설치하는 동안 yarn.lock에서 유지되는 접두사를, . 나는 yarn이 package.json에서 해상도 정보를 검색하는 것보다 yarn.lock 파일을 보는 것을 선호한다고 생각했습니다.

package.json을 직접 편집하고 접두사를 설정하면 모든 것이 잘 작동했습니다.

@maybeec 그 문제는 실제로 마스터 브랜치에서 이미 해결되었습니다 ... https://github.com/yarnpkg/yarn/issues/1312#issuecomment -258230803

잘하셨습니다. 다음 릴리스를 기대하고 있습니다. 많은 문제가 해결 될 것이라고 생각합니다.

그래, 나는 새로운 릴리스를 만드는 데 방해가되는 것이 무엇인지 완전히 어리 석다. 지금 한 달 정도 됐나요? 엄격한 Facebook 정책이나 뭐 ... 😢

1784는 새 릴리스를 요청합니다. 그냥 엄지 척 반응을 남겨주세요!

문제 는 동일하지는 않지만 비슷한 흥미로운 부분을 발견

static cleanUrl(url): string {
    return url.replace(/^git\+/, '');
}

Soooo .... 누구든지 말해 줄 수 있습니까? yarn에 전달 된 각 git url에 대해 _git + _

1816은이 문제를 해결할 수 있습니다. 코드 변경 사항을 살펴보면 도메인 뒤의 콜론 문제가 확실히 해결됩니다.

문제는 yarn v0.17.0에서 수정 된 것 같습니다. 특정 버전에서 개인 Github 저장소 중 하나를 얻을 수있었습니다.

이 문제가 해결 되었습니까? 내 프로젝트를 npm에서 yarn으로 마이그레이션하려고하지만 [email protected]에서 여전히이 문제에 직면 해 있습니다!

@BTS_twt ᄏ ᄏ ᄏ ᄏ ᄏ ᄏ ᄏ

image

이것이 수정 된 것처럼 보입니다 https://github.com/yarnpkg/yarn/pull/971 ! 콜론 (:)을 슬래시 (/)로 대체하면 실제로 작동합니다. : ')

내 경우 에는 콜론을 슬래시로 바꾸는 것이 작동하지 않습니다 :( _git + ssh : //git@private..._ 여전히 _ ssh : //git@private..._

예, Yarn 0.17.2 버전에서도 여전히이 문제가 발생합니다. git+ 부분이 제거되고 다음과 같이 끝납니다.

Permission denied (publickey).
fatal: Could not read from remote repository.

일부 사람들을 위해 일하고 있다는 점을 감안할 때 나를 혼란스럽게 만듭니다. 우리가 뭘 잘못하고 있는지 아십니까?

~ / .ssh / config에 넣으십시오.

Host github.com
        User git

예! 그것은 나를 위해 그것을 고쳤습니다. 감사.

cleanUrl 가 실행되지 않으면 좋을 것이므로 대신 URL에 직접 넣을 수 있습니다. 구성 파일을 변경하려면 버전 제어를 통해 처리 할 수있는 devops 변경이 필요합니다. 이 뒤에 어떤 사고 과정이 있었는지 잘 모르겠습니다 ...?

여기에도 같은 문제가 있습니다. 개인 저장소 URL이 이전 (npm)과 같이 작동하지 않습니다.

git + ssh : //[email protected] : ORG / repo.git은 마이그레이션 단계에서 npm과 호환되어야하므로 작동해야합니다.

@DominicBoettger ~/.ssh/configUser git 을 추가했으면 해당 콜론도 슬래시로 변경해야합니다. 내 경험상 Yarn은 아직 콜론과 잘 어울리지 않습니다.

git+ssh://github.com/ORG/repo.git

양식의 종속성

git+ssh://[email protected]:myuser/repo.git#v1.0.0",

최신 원사 017.2 로 나를 위해 일하지 마십시오. 오류는 다음과 같습니다.

ssh: Could not resolve hostname bitbucket.org:myuser: Name or service not known

아직 해결 방법을 테스트하지는 않았지만 yarn이 결국 NPM과 동일한 구문을 지원하기를 바랍니다. 이것이 새로운 문제 여야합니까, 아니면 여전히이 문제에 적용됩니까?

@sarus PR # 1816이이 문제를 해결합니다.

PR # 1816을 병합하고 새 버전을 게시하세요 👍

병합 하시겠습니까? 어떤 사람? NPM이 너트를 몰고 있습니다 !! 병합하고 해제하십시오 :(

이 문제는 v0.18.0에 남아 있습니다.

node_modules 및 yarn.lock 파일없이 깨끗한 프로젝트에서 yarn install 를 호출하면 작동합니다. 바로 다시 호출하면 "호스트 이름을 확인할 수 없습니다"오류가 발생합니다.

yarn.lock 파일을 제거하면 작동한다는 것을 발견 했으므로 잠금 파일에 문제가 있거나 잠금 파일에서 읽을 때 yarn이 복제하는 방식이 있다고 가정합니다.

도움이 되었기를 바랍니다!

이 문제는 많은 개발자가 원사를 사용하는 것을 막는 바로 그 문제입니다.
우리는이 문제를 진지하게 받아 들여야합니다

@regou는 완전히 동의합니다 ... 이것이 내가 Yarn을 사용할 수없는 유일한 이유입니다 ...

사람들은 아무도 이것에 대해 일하지 않는다고 계속해서 불평하는 대신 PR # 1816을 언급 한 것을 보시면 그들이 그것을 병합하려고하는 것을 보게 될 것입니다.

Flavio와 제가 약 10 일 동안 보낸 # 1816에서이 문제에 대한 수정 사항이있는 모든 분들께 부탁드립니다.

그러나 테스트가 실행되는 위치에 따라 다른 테스트 세트가 실패합니다.

컴퓨터에서 테스트를 실행하고 얻은 결과와 OS 및 노드 버전이 무엇인지 # 1816에 대해보고하십시오.

모두에게 # 1816을 알려준 @FredyC & @BryanCrotaz 에게 감사드립니다. 당분간이 스레드를 잠그고 있습니다.

# 2384를 통해 수정 됨

이 페이지가 도움이 되었나요?
0 / 5 - 0 등급