Yarn: pemasangan paket git + ssh sepertinya tidak berfungsi

Dibuat pada 5 Okt 2016  ·  103Komentar  ·  Sumber: yarnpkg/yarn

Catatan OP: jika Anda juga mengalami masalah yang TEPAT, harap beri suara positif TANPA berkomentar.


Apakah Anda ingin meminta _feature_ atau melaporkan _bug_?

bug

Bagaimana perilaku saat ini?

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

Jika perilaku saat ini adalah bug, berikan langkah-langkah untuk mereproduksi.

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

Apa perilaku yang diharapkan?

instal biasa

Sebutkan node.js, benang, dan versi sistem operasi Anda.

Node.js: v6.6.1-pre
Benang: v0.14.0 ( master )
OS: OSX 10.10.5

cat-bug

Komentar yang paling membantu

Untuk konteksnya, dari dokumen NPM :

npm install <git remote url>:

Instal paket dari penyedia git yang dihosting, kloning dengan git. Pertama mencoba melalui https (git dengan github) dan jika gagal, melalui ssh.

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

<protocol> adalah salah satu dari git , git+ssh , git+http , git+https , atau git+file . Jika tidak ada <commit-ish> yang ditentukan, maka master digunakan.

Perlu juga dicatat bahwa <commit-ish> adalah array yang cukup luas dari nilai yang dapat diselesaikan.

Objek commit atau objek yang dapat direferensikan secara rekursif ke objek commit . Berikut ini semua commit-ishes: objek commit , objek tag yang mengarah ke objek commit , objek tag yang mengarah ke tag objek yang mengarah ke objek commit , dll.

Catatan: Pemasangan url jarak jauh git ini juga harus dipastikan berfungsi di instance server git publik dan pribadi menggunakan kunci SSH untuk autentikasi server, tidak hanya GitHub / GitLab / dll. Anda dapat membayangkan sebuah skenario di mana perusahaan menggunakan server git lokal di rumah untuk semua dependensi yang dikelola secara internal (atau bahkan repo GitHub pribadi yang diakses melalui SSH). Sampai sekarang, yarn tidak disiapkan untuk mengakomodasi kasus penggunaan yang _relatif umum_ ini.

Cara termudah untuk menyiapkan kasus repro adalah mencoba menginstal paket dari repositori GitHub pribadi menggunakan Yarn.

Semua 103 komentar

Apakah Anda memiliki repro yang dapat saya gunakan kata demi kata? Kesulitan mereproduksi ini.

Tidak, maaf.

Itu sebenarnya bukan dari github pribadi saya. Itu "git+ssh://[email protected]/<org>/<package>.git"

Repo bersifat pribadi dan saya memiliki akses baca / tulis. (Ini mengaksesnya melalui kunci SSH yang terdaftar di akun github saya)

Apakah ada keluaran log tambahan yang bisa saya dapatkan untuk Anda?

Saya akan menyebutkan ini terjadi dengan lebih dari satu pengenal tersebut.

Repro minimum:

{
  "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"
}

Paket tidak ada di registri, jika itu membuat perbedaan.

Ini juga error saat menentukan tag git (yang diizinkan npm).

Contoh cuplikan:

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

Saya juga mendapatkan # 621 ini

Hanya menambahkan jika ada perbedaan yang halus / memerlukan solusi tambahan untuk @BBB kasus git tag:

Saya mencoba memasang hash_ commit spesifik dengan git + ssh. Klien default NPM mendukung ini.

Sepertinya # 573, # 633 dan # 639 terkait

Untuk konteksnya, dari dokumen NPM :

npm install <git remote url>:

Instal paket dari penyedia git yang dihosting, kloning dengan git. Pertama mencoba melalui https (git dengan github) dan jika gagal, melalui ssh.

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

<protocol> adalah salah satu dari git , git+ssh , git+http , git+https , atau git+file . Jika tidak ada <commit-ish> yang ditentukan, maka master digunakan.

Perlu juga dicatat bahwa <commit-ish> adalah array yang cukup luas dari nilai yang dapat diselesaikan.

Objek commit atau objek yang dapat direferensikan secara rekursif ke objek commit . Berikut ini semua commit-ishes: objek commit , objek tag yang mengarah ke objek commit , objek tag yang mengarah ke tag objek yang mengarah ke objek commit , dll.

Catatan: Pemasangan url jarak jauh git ini juga harus dipastikan berfungsi di instance server git publik dan pribadi menggunakan kunci SSH untuk autentikasi server, tidak hanya GitHub / GitLab / dll. Anda dapat membayangkan sebuah skenario di mana perusahaan menggunakan server git lokal di rumah untuk semua dependensi yang dikelola secara internal (atau bahkan repo GitHub pribadi yang diakses melalui SSH). Sampai sekarang, yarn tidak disiapkan untuk mengakomodasi kasus penggunaan yang _relatif umum_ ini.

Cara termudah untuk menyiapkan kasus repro adalah mencoba menginstal paket dari repositori GitHub pribadi menggunakan Yarn.

Jika Anda menentukan string sumber berikut:

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

maka tidak upaya untuk mengkloning repositori menyatakan lebih SSH, tapi gagal dengan "Izin ditolak (publickey)" karena GitHub mengharapkan klien untuk masuk sebagai git pengguna, dan dalam hal ini pengguna account lokal digunakan secara default .

Ketika Anda menentukan git@ untuk memaksa git login sebagai git ke GitHub, maka gagal dengan yang biasa:

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

Jadi, ini hampir berfungsi, tetapi tidak mendukung penetapan nama pengguna. Jika pengguna akun lokal Anda kebetulan dipanggil git , maka itu benar-benar akan berhasil.

Jika Anda menambahkan berikut ini ke file ~/.ssh/config :

Host github.com
        User git

Anda dapat memaksa semua login ke github.com melalui SSH untuk menggunakan pengguna git secara default, dan ini membuat benang dapat mengkloning dari repositori pribadi saat menggunakan format sumber ssh://github.com/<user>/<package> .

Ini adalah larangan yang kuat bagi kami, menggunakan repo yang direferensikan git (menunjuk contoh EE gitlab lokal kami) adalah bagian yang kuat dari alur kerja kami: cry:
Juga sangat berguna untuk mem-forking dan menunjuk ke paket "sebelum merge dan npm publish" (mis. Http-proxy ...)

@bayu_joo

Jika Anda menambahkan berikut ini ke file ~ / .ssh / config:

Tetapi konfigurasi saya sudah memiliki kredensial autentikasi ssh untuk github sehingga saya dapat mengakses repo pribadi. Solusi ini hanya berfungsi untuk repo publik, bukan?

@milosivanovic @ntucker sebenarnya ini berhasil dalam kasus khusus saya; Saya tidak memiliki file konfigurasi ssh untuk memulai.

@kblcuk ah, yah @milosivanovic membahas masalah lain dan mengklaim bahwa solusinya berhasil untuk kasus tersebut, jadi saya pikir ini adalah masalah umum dengan url git.

@ntucker solusi yang disebutkan adalah untuk repositori pribadi. Jika Anda sudah memiliki entri Host github.com di ~/.ssh/config , tambahkan User git ke entri itu dan benang akan dapat mengkloning ketika Anda menentukan string sumber seperti ssh://github.com/<user>/<package> , yaitu tanpa "git +" dan tanpa pengguna yang ditentukan.

@milosivanovic Bagaimana github mengetahui nama pengguna saya untuk melakukan auth ssh?

@ntucker saat berkomunikasi melalui SSH, GitHub mengharapkan Anda untuk masuk ke server mereka sebagai pengguna "git". Jika Anda mencoba masuk dengan nama pengguna GitHub yang biasa, autentikasi akan gagal. GitHub melalui SSH membedakan Anda dengan kunci publik Anda, bukan nama pengguna. Referensi: https://help.github.com/articles/testing-your-ssh-connection/

Hanya terpikir untuk menyebutkan karena banyak yang mungkin tidak mengetahui fitur ini. Untuk GitHub, Anda juga dapat bergantung pada URL tarball yang berfungsi dengan baik dengan yarn . Menginstal lebih cepat juga.

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

@milosivanovic sayangnya solusi ini tidak berfungsi untuk url internal kami dalam format:
git+ssh://[email protected]:team-name/repo.git

Jika Anda mengubah repo awal ke format ssh://source.com/team-name/repo.git ...

... maka itu akan bekerja untuk yang pertama ... tetapi kemudian tentu saja semua dependensi internal lain yang ditunjukkan oleh dependensi internal pertama untuk memecahnya, karena semuanya dalam format itu.

Tanpa melalui dan mengubah semua URL di semua repo dan dependensi kami ke format solusi (kemudian harus menanganinya tidak berfungsi pada npm secara normal), kami juga sedikit diblokir tentang ini.

Seperti yang ditunjukkan @ 131 , ini adalah cara utama tim menggunakan npm secara internal (yang saya ketahui).

Terlihat bagus selain itu!

@brokenalarms format ssh://host.com/user/repo sepenuhnya kompatibel dengan npm (selama pengguna yang diharapkan ditentukan dalam file konfigurasi SSH), tapi tetap saja itu adalah poin yang adil.

Saya mengerti .... jadi mereka hanya tahu pengguna apa yang didasarkan pada kunci ssh itu?

@yaelah

Saya memiliki masalah yang sama tetapi solusi ntucker untuk menambahkan User git ke ~ / .ssh / config membantu saya. Setidaknya di lingkungan pembangunan. Akan mencoba menerapkan ke AWS EB sekarang :)

Dapat mengonfirmasi, bahwa menggunakan git+ssh://[email protected]:<org>/<repo> tidak berfungsi di yarn dan mengubah ke https://github.com:<org>/<repo> memang berfungsi, tetapi itu akan gagal pada server CI kami yang masih menggunakan _NPM _.

Solusi ini membantu saya:

  1. mengubah URL repositori pribadi saya dari
git+ssh://git@host/user/private-repo.git 

untuk

ssh://host/user/private-repo.git
  1. Menambahkan git Pengguna ke ~ / .ssh / config:
Host bitbucket.org
    User git

Host github.com
    User git

Ada yang memeriksa apakah solusi berfungsi dengan bitbucket?

@tgarbiak - ya, saya menggunakan bitbucket.

Menggunakan BitBucket, saya menambahkan ini ke ~ / .ssh / config saya:

Host stash.company.com
    port 7999
    User shawn

Dan benang bekas untuk menambahkan paket ini:

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

Ketika saya menjalankan npm install , itu berfungsi dengan baik, tetapi ketika saya menjalankan yarn install , saya mendapatkan kesalahan ini:

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)

Ya, seperti yang ditunjukkan sebelumnya, solusi ini berfungsi.

Intinya adalah bahwa akan mengubah ini di setiap 50+ kami
dependensi, dan mengharuskan setiap pengguna di masa mendatang sekarang mengambil tambahan
langkah mempersiapkan file konfigurasi ssh mereka untuk bekerja dengan baik benang maupun
sayangnya pengaturan npm yang ada bukanlah suatu pilihan.

Pada Rabu, 12 Okt 2016, 3:47 Sven Varkel [email protected] menulis:

Solusi ini membantu saya:

  1. mengubah URL repositori pribadi saya dari git + ssh: //git@host/user/private-repo.git
    untuk
    ssh: //host/user/private-repo.git
  2. Menambahkan git Pengguna ke ~ / .ssh / config:
    ``
    Host bitbucket.org
    Pengguna git

Host github.com
Pengguna git

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253180666, atau nonaktifkan
utasnya
https://github.com/notifications/unsubscribe-auth/AHC8CnUaBP_B_FL_AX1xL5FUrEWR-rnPks5qzLrTgaJpZM4KO4Cm
.

@diorman & siapa saja yang membaca ini: Saya sangat menyarankan agar Anda tidak memeriksa token github ke file package.json Anda di kontrol sumber.

@jsdnxx terima kasih telah menunjukkan hal ini. Saya baru saja melompat ke proyek pribadi besar yang sudah memiliki token di package.json untuk dependensi pribadi. Akan mengikuti saran Anda. Terima kasih lagi

Untuk cabang, solusi tarball dari https://github.com/yarnpkg/yarn/issues/513#issuecomment -253059522 tampaknya tidak berfungsi, mungkin karena cache. Saya menggunakan Yaska/keystone#yaska-build sebagai nama paket yang akan diinstal, dan menggunakan komit yang salah, dan saat menggunakan https://github.com/Yaska/keystone/tarball/yaska-build ia masih menggunakan komit yang salah. npm menanganinya dengan benar.

Pada catatan terkait, jika saya memiliki yarn link ed ketergantungan repo pribadi secara lokal, benang seharusnya tidak memeriksa untuk melihat apakah ketergantungan itu ada di registri npm, tetapi saat ini benang gagal dalam kasus ini tanpa satupun dari solusi yang disebutkan di utas ini.

Konfigurasi ~ / .ssh / config yang diusulkan merusak penyelesaian paket, jadi tidak berfungsi. Semoga PR yang memperbaiki ini akan segera digabungkan, jika tidak kembali ke NPM yang baik.

Solusi untuk gitlab menggunakan format ini:

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

Bekerja juga dengan repositori pribadi, gunakan Token Akses Pribadi Gitlab :

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

@Webysther - seperti yang dikatakan @jsdnxx :

Saya sangat menyarankan agar Anda tidak memeriksa token github ke file package.json Anda di kontrol sumber.

Hal yang sama berlaku untuk GitLab atau token pribadi lainnya.

Private Token hanya untuk param, versi terbaru Gitlab dapat mengelola beberapa token akses.
Saya ingin menggunakan git + ssh di benang ...

Dari Dokumen Gitlab:

Token Akses Pribadi

Anda dapat membuat token akses pribadi untuk setiap aplikasi yang Anda gunakan yang memerlukan akses ke GitLab API.

Token Pribadi

Token pribadi Anda digunakan untuk mengakses sumber daya aplikasi tanpa otentikasi.

Saya telah melihat kodenya dan menurut saya pernah ada git repo
didapat, hash komitnya tidak lagi dicentang, jadi Anda tidak dapat melacak cabang.

Apakah itu penilaian yang benar, dan jika demikian, apakah itu termasuk dalam penilaian yang berbeda
isu?

Pada hari Jumat, 14 Okt 2016 jam 6:52 AM Webysther Nunes [email protected]
menulis:

Token Pribadi hanya untuk param, versi Gitlab yang lebih baru dapat mengelola
beberapa token akses.
Saya ingin menggunakan git + ssh di benang ...

Dari Dokumen Gitlab:
Token Akses Pribadi

Anda dapat membuat token akses pribadi untuk setiap aplikasi yang Anda gunakan itu
membutuhkan akses ke GitLab API.
Token Pribadi

Token pribadi Anda digunakan untuk mengakses sumber daya aplikasi tanpa
autentikasi.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253709157, atau nonaktifkan
utasnya
https://github.com/notifications/unsubscribe-auth/AADWlhxxjS7Kl1wt_Wm6UG1Q_7X86D7oks5qzwqYgaJpZM4KO4Cm
.

@wmertens Tidak, versinya tetap terkunci di dalam yarn.lock. Coba yarn upgrade

@Webebers sayang, yarn upgrade tidak membuat perbedaan. Itu tetap menggunakan komit lama. Saya harus mencatat bahwa cabang itu didorong secara paksa, tetapi saya tidak berpikir itu penting, karena benang harus mencari komit yang cocok dengan tag yang diberikan dan menginstalnya, bukan?

Saya menemukan solusi untuk memaksa benang mengambil komit yang benar:

Hapus paket dari ~/.yarn-cache lalu jalankan yarn upgrade .

Itu akan mengambilnya lagi dan segala sesuatunya sebagaimana mestinya. Apakah salah mengharapkan yarn upgrade memeriksa komit dari git repo?

Saya pikir benar bahwa peningkatan benang harus memeriksa komit git baru, namun itu harus versi per proyek, tidak di-cache di direktori home pengguna. Tapi itu juga merupakan bug terpisah menurut saya

Proyek kami memiliki ratusan entri package.json dari formulir
"[name]": "[email protected]:[team]/[project].git"
Kesalahan yang sama terlihat

Apakah ini akan diperbaiki oleh PR # 971?

@BryanCrotaz Tidak, tampaknya itu bukan solusi yang lengkap. Sepertinya terbatas pada GitHub. Repo pribadi masih menjadi masalah (mis. git+ssh://[email protected]:user/project.git#d6c5789 )

EDIT: Seperti yang ditunjukkan oleh @bdougherty di bawah ini, git+ssh://[email protected]/user/project.git#d6c5789 , dengan / bukan : sebelum pengguna, berfungsi.

+1

Saya dapat mengatasi masalah ini dengan mengubah format url dari

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

untuk

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

Kedua format tersebut valid dalam npm dan satu-satunya tangkapan adalah bahwa semua dependensi perlu menggunakan format itu.

@kittens Saya pikir ini ( git+ssh://git@host/org/repo.git ) bekerja untuk saya sekarang?

benang : v0.16.1
node : v6.9.1


Saya tidak mencoba git+ssh://git<strong i="13">@host</strong>:org/repo.git tetapi url.parse() sepertinya tidak mengabaikan : sepenuhnya sehingga mungkin perlu dihilangkan:

> 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' }

Mungkin https://github.com/yarnpkg/yarn/pull/934 secara tidak sengaja memperbaiki ini?

@ Fishrock123 Saya dapat mengonfirmasi apa dengan pemasangan paket benang v0.16.0 git + ssh tampaknya berfungsi.
Dengan v0.13.0 itu gagal secara konsisten dengan error Couldn't find package "<package>" on the "npm" registry. untuk paket git + ssh.

@ Fishrock123 Dikonfirmasi. Bahkan di sini itu berhasil sekarang.

Ya, # 934 dimaksudkan untuk memperbaiki ini :)

Namun, format berikut tidak akan berfungsi: git+ssh://git<strong i="6">@host</strong>:org/repo.git (dengan pemisah : )

Apakah ada informasi tentang seberapa cepat dukungan pemisah : akan datang?

Saya sedang mengerjakan sesuatu, tetapi belum memiliki kesempatan untuk menangani beberapa kasus edge. Saya akan mencoba melakukannya minggu depan jika tidak ada yang mengalahkan saya.

Saya masih punya masalah dengan ini, tapi mungkin sedikit berbeda. Saya dapat menginstal paket tunggal dengan yarn add git+ssh://[email protected]/group/foo.git#0.0.4 dan itu bekerja dengan baik. Kemudian saya ingin menginstal yang lain ke proyek yang sama yarn add git+ssh://[email protected]/group/bar.git dan tiba-tiba saya mendapatkan Couldn't find package "group-foo" on the "npm" registry.

Saya menggunakan versi 0.16. Haruskah saya membuat masalah baru dengan ini?

Sunting: Mungkin ingin menambahkan bahwa yarn.lock terlihat oke ...

"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: Mungkin sebenarnya ada masalah di package.json, sepertinya ini setelah instalasi pertama. Jelas itu telah menjatuhkan protokol sementara di yarn.lock itu disimpan. Jadi saya kira itu tidak dapat menemukannya sehingga terlihat di npm sebagai gantinya.

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

+100

Memperbarui ke v0.16.1 dan menggunakan sintaks git+ssh://git@host/org/repo.git memperbaiki masalah untuk saya (catatan: masih tidak berfungsi dengan sintaks git+ssh://git<strong i="6">@host</strong>:org/repo.git )

Intinya pasti adalah untuk mendukung file package.json yang ada jika tidak migrasi sulit dan berjalan ganda untuk pengujian tidak mungkin

Menggunakan benang 0.16.1 Saya dapat menggunakan repositori pribadi dengan sintaksis git + ssh. Juga, ini menggunakan git @ user dengan benar.

@feruch Dan dapatkah Anda menjalankan mis. yarn ls setelah instalasi seperti itu? Bagaimana tampilan package.json , apakah url ke repo pribadi sama atau entah bagaimana berubah?

@FredyC keluaran saya 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]

Ini dijalankan setelah menghapus my-private-package dari node_modules .
Setelah yarn add , saya dapat melihat file dengan benar di dalam node_modules .

Keluaran benang 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

Saya tidak yakin mengapa ini memberikan 0.1.4 karena paket tersebut tidak ada di registri npm, dan paket github memiliki versi 2.1.3 .

EDIT

Juga, perlu dicatat bahwa ini telah ditambahkan ke 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 Ya, saya memiliki masalah yang persis sama di sana. Saya hampir yakin bahwa jika Anda mencoba menambahkan paket lain di sana sekarang (bahkan satu dari npm), itu akan gagal juga. Saya telah membuat masalah terpisah untuk ini ... # 1312

Saya memiliki masalah yang sama di sini, tetapi dengan url publik, bukan melalui ssh.

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

Halo semua,

Saya menemukan bahwa masalahnya juga terkait dengan versi node yang Anda miliki.

Saya menggunakan format "git + ssh: //[email protected]//.git #". Saya melakukan pengembangan pada OSX dan CentOS 7. Saya telah menemukan bahwa dengan versi terbaru dari node 4 (v4.6.1) dan node 6 (v6.9.1) benang bekerja dengan format ini tanpa masalah. Dengan versi node yang lebih lama 4 (v4.4.5) bekerja pada OSX tetapi tidak CentOS 7. Khususnya ketika benang mencoba untuk mengunduh repo itu hanya hang selamanya Jika Anda mengalami masalah yang sama, pastikan Anda menjalankan versi terbaru dari node 4 atau 6.

Mengacu pada kcormier saya mencoba kedua node 4.6.1 dan node 6.9.1 dan tidak satupun dari mereka menyelesaikan masalah benang tidak dapat menemukan versi tag spesifik dari repo melalui SSH.

Format yang gagal adalah:

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

Ini masih memberikan kesalahan bahwa ia tidak dapat menemukan versi yang cocok dengan tag (berfungsi dengan baik dengan npm).

Saya merasa berfungsi dengan baik jika saya mengubah titik dua setelah domain menjadi garis miring. Aneh, bukan?

@alanhogan Saya juga memperhatikan itu berfungsi dengan baik jika kita mengubah titik dua setelah domain menjadi garis miring, tetapi jika paket memiliki dependensi git + ssh lain, Anda harus mengubahnya di package.json perpustakaan / paket yang diinstal . Masalah lainnya adalah bahwa meskipun Anda mengubah titik dua menjadi garis miring, kesalahan akan dipicu jika Anda mencoba mereferensikan komit atau cabang tertentu.

Saya sendiri telah berhasil mengacu pada cabang dan tag. Saya menggunakan node 6.9.1

Tapi ya masalah rekursif itu nyata, meski tidak terlalu buruk karena secara teori hanya modul pribadi kita sendiri yang akan terpengaruh.

@alanhogan ya saya menghadapi masalah yang sama.

Perbaikan di atas tampaknya tidak berhasil dalam kasus saya. Saya telah membuat fork paket Npm resmi di repo saya, dan ketika saya memberikan URL repo saya, bahkan dengan / alih-alih:, benang menyelesaikan Repo resmi. (resmi: https://github.com/TheLarkInn/angular2-template-loader, milik saya: https://github.com/Krisa/angular2-template-loader). Saya tidak dapat menemukan solusi (selain menggunakan Npm saat ini).

Beralih dari dependensi berversi ke dependensi tarball memerlukan yarn cache clean sebelum benar-benar akan mengekstrak tarball sebagai node_module baru (Node v6 LTS dan benang v0.16.1).

pasukan pengembang telah memilih ini, adakah cara kami dapat membantu?

@ f-sign sedang mengerjakannya di tim kami. Adakah yang Anda ingin bantuan dari tentara, Flávio?

Satu bagian penting dari masalah ini tampaknya adalah ketidakkonsistenan package.json dan yarn.lock seperti yang dijelaskan oleh @FredyC : package.json tidak berisi awalan git+ssh://git@ , yang dipertahankan di yarn.lock selama instalasi . Saya berpikir, benang itu lebih memilih untuk melihat file yarn.lock daripada mengambil informasi resolusi dari package.json

Setelah mengedit package.json dengan tangan dan mengatur awalan, semuanya bekerja dengan baik.

@maybeec Masalah itu sebenarnya sudah diselesaikan di cabang utama ... https://github.com/yarnpkg/yarn/issues/1312#issuecomment -258230803

Bagus, saya menantikan rilis berikutnya. Saya pikir itu akan memperbaiki banyak masalah.

Ya, saya benar-benar tercengang apa kerugiannya dengan membuat rilis baru. Yang ini sudah sekitar sebulan sekarang? Saya kira itu beberapa kebijakan Facebook yang ketat atau apa ... 😢

1784 meminta rilis baru. Tolong tinggalkan reaksi jempol!

Masalah saya menjelaskan masalah, yang serupa, meskipun tidak sama. Saya melihat-lihat kodenya sedikit, dan menemukan bagian yang menarik ini , yang sebenarnya digunakan di setiap url git:

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

Soooo .... Adakah yang bisa memberi tahu saya, apa alasan menghapus _git + _ untuk setiap url git yang diteruskan ke benang? Saya tidak melihat alasan sebenarnya, dan kodenya kurang dokumentasi, jadi mungkin seseorang bisa menjelaskan maksudnya :)

1816 mungkin akan memperbaiki ini - lihat perubahan kode - ini pasti memperbaiki masalah dengan titik dua setelah domain

Masalahnya tampaknya diperbaiki pada benang v0.17.0. Saya bisa mendapatkan salah satu repositori Github pribadi saya pada versi tertentu.

Apakah masalah ini sudah diperbaiki? Saya mencoba untuk memigrasi proyek saya dari npm ke benang tetapi masih menghadapi masalah ini dengan [email protected] !

@viswanathamsantosh Sepertinya bekerja di sisi saya

image

sepertinya ini diperbaiki di sini https://github.com/yarnpkg/yarn/pull/971 ! mengganti titik dua (:) dengan garis miring (/) benar-benar berfungsi. : ')

Mengganti titik dua dengan garis miring tidak berfungsi dalam kasus saya :( _git + ssh: //git@private..._ masih dipotong menjadi _ ssh: //git@private..._

Ya, saya masih mengalami masalah ini juga, bahkan dengan Yarn versi 0.17.2. Bagian git+ dihapus dan saya berakhir dengan:

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

Mengingat bahwa itu bekerja untuk beberapa orang membuat saya bingung. Tahu apa yang kita lakukan salah?

tempatkan ini di ~ / .ssh / config

Host github.com
        User git

Iya! Itu memperbaikinya untuk saya. Terima kasih.

Akan lebih baik jika cleanUrl tidak dijalankan, jadi kita dapat memiliki ini secara langsung di URL sebagai gantinya. Harus mengubah file konfigurasi memerlukan perubahan dev di mana kita dapat memiliki kontrol versi yang menanganinya. Tidak yakin apa proses berpikir di balik ini ...?

Masalah yang sama disini. Url repositori pribadi tidak berfungsi seperti sebelumnya (npm).

git + ssh: //[email protected] : ORG / repo.git harus berfungsi karena diperlukan agar kompatibel dengan npm selama fase migrasi ...

@DominicBoettger Setelah Anda menambahkan User git ke ~/.ssh/config Anda juga ingin mengubah titik dua itu menjadi garis miring. Dalam pengalaman saya hari ini, Yarn belum bermain baik dengan titik dua.

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

dependensi formulir

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

jangan bekerja untuk saya dengan benang terbaru 017.2 . Kesalahannya adalah:

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

Belum menguji penyelesaiannya tetapi berharap benang pada akhirnya akan mendukung sintaks yang sama seperti NPM. Haruskah ini menjadi masalah baru atau apakah ini masih berlaku untuk masalah ini?

@sarus PR # 1816 akan memperbaiki ini

Gabungkan PR # 1816 dan terbitkan versi baru 👍

Menggabungkan? Some one? NPM MENGEMUDI SAYA NUTS !! Harap gabungkan dan lepaskan :(

Masalah ini tetap di v0.18.0.

Memanggil yarn install dalam proyek bersih, tanpa node_modules dan file yarn.lock berfungsi. Memanggilnya lagi tepat setelahnya akan menghasilkan kesalahan "Tidak dapat menyelesaikan nama host".

Saya menemukan bahwa menghapus file yarn.lock berfungsi, jadi saya berasumsi bahwa ada sesuatu yang salah dalam file kunci atau cara benang klon saat membaca dari file kunci.

Semoga ini membantu!

Masalah ini adalah salah satu yang menghentikan banyak pengembang untuk menggunakan benang.
Kami perlu menanggapi masalah ini dengan serius

@regou sangat setuju bung ... Ini adalah satu-satunya alasan saya tidak dapat menggunakan Benang ...

Orang-orang, alih-alih mengomel terus-menerus bahwa tidak ada yang mengerjakan ini, lihat saja yang menyebutkan PR # 1816 dan Anda akan melihat mereka mencoba untuk menggabungkannya ...

Tolong setiap orang, kami memiliki perbaikan untuk ini di # 1816 yang Flavio dan saya habiskan sekitar sepuluh hari.

Namun, serangkaian pengujian yang berbeda gagal tergantung di mana pengujian tersebut dijalankan.

Jalankan pengujian pada mesin Anda dan laporkan pada # 1816 hasil apa yang Anda dapatkan dan apa OS dan versi node Anda

Terima kasih @FredyC & @BryanCrotaz untuk mengarahkan semua orang ke # 1816. Saya mengunci utas ini untuk saat ini.

Diperbaiki melalui # 2384

Apakah halaman ini membantu?
0 / 5 - 0 peringkat