Yarn: يبدو أن تثبيت حزمة git + ssh لا يعمل

تم إنشاؤها على ٥ أكتوبر ٢٠١٦  ·  103تعليقات  ·  مصدر: yarnpkg/yarn

ملاحظة OP: إذا كنت تواجه هذه المشكلة بالضبط ، فيرجى التصويت على هذا بدون تعليق.


هل تريد طلب _ ميزة _ أو الإبلاغ عن _ خطأ _؟

خلل برمجي

ما هو السلوك الحالي؟

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 والغزل وإصدار نظام التشغيل.

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 (git with github) وإذا فشل ذلك ، عبر 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 . فيما يلي جميع عمليات الالتزام: كائن commit ، كائن tag يشير إلى كائن commit ، كائن tag يشير إلى tag يشير إلى كائن commit ، إلخ.

ملاحظة: يجب أيضًا التأكد من أن عمليات تثبيت عنوان URL البعيد لـ git تعمل عبر مثيلات خادم git العامة والخاصة باستخدام مفاتيح SSH لمصادقة الخادم ، وليس فقط GitHub / GitLab / إلخ. يمكنك أن تتخيل سيناريو تستخدم فيه الشركة خادم git محليًا داخليًا لجميع التبعيات المُدارة داخليًا (أو حتى مستودعات GitHub الخاصة التي يتم الوصول إليها عبر SSH). اعتبارًا من الآن ، لم يتم إعداد yarn لاستيعاب حالات الاستخدام هذه _الشائعة نسبيًا_.

أسهل طريقة لإعداد حالة repro هي محاولة تثبيت حزمة من مستودع GitHub خاص باستخدام Yarn.

ال 103 كومينتر

هل لديك توبيخ يمكنني استخدامه حرفيًا؟ تواجه مشكلة في إعادة إنتاج هذا.

لا آسف.

لم يكن في الواقع من جيثب الشخصي الخاص بي. إنه "git+ssh://[email protected]/<org>/<package>.git"

الريبو خاص ولدي حق الوصول للقراءة / الكتابة. (هذا يصل إليه عبر مفتاح SSH المسجل في حسابي على github)

هل هناك إخراج سجل إضافي يمكنني الحصول عليه بطريقة ما؟

سوف أذكر أن هذا يحدث مع أكثر من معرف واحد.

الحد الأدنى من repro:

{
  "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 + ssh. يدعم هذا العميل الافتراضي NPM.

يبدو أن # 573 و # 633 و # 639 مرتبطة ببعضها البعض

للسياق ، من مستندات NPM :

npm install <git remote url>:

تثبيت الحزمة من موفر git المستضاف ، واستنساخها باستخدام git. أولاً ، يحاول عبر https (git with github) وإذا فشل ذلك ، عبر 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 . فيما يلي جميع عمليات الالتزام: كائن commit ، كائن tag يشير إلى كائن commit ، كائن tag يشير إلى tag يشير إلى كائن commit ، إلخ.

ملاحظة: يجب أيضًا التأكد من أن عمليات تثبيت عنوان URL البعيد لـ git تعمل عبر مثيلات خادم git العامة والخاصة باستخدام مفاتيح SSH لمصادقة الخادم ، وليس فقط GitHub / GitLab / إلخ. يمكنك أن تتخيل سيناريو تستخدم فيه الشركة خادم git محليًا داخليًا لجميع التبعيات المُدارة داخليًا (أو حتى مستودعات GitHub الخاصة التي يتم الوصول إليها عبر SSH). اعتبارًا من الآن ، لم يتم إعداد yarn لاستيعاب حالات الاستخدام هذه _الشائعة نسبيًا_.

أسهل طريقة لإعداد حالة repro هي محاولة تثبيت حزمة من مستودع GitHub خاص باستخدام Yarn.

إذا حددت سلسلة المصدر التالية:

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

ثم يفعل محاولة لاستنساخ مستودع ذكر خلال SSH، ولكن فشل مع "تم رفض الترخيص (publickey)" لجيثب تتوقع عملاء تسجيل الدخول باسم git المستخدم، وفي هذه الحالة تم استخدام حساب المستخدم المحلي بشكل افتراضي .

عندما تحدد git@ لإجبار git على تسجيل الدخول كـ git إلى GitHub ، فإنه يفشل مع المعتاد:

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

لذلك ، يعمل تقريبًا ، لكنه لا يدعم تحديد اسم المستخدم. إذا كان اسم مستخدم الحساب المحلي الخاص بك هو git ، فعندئذ سينجح بالفعل.

إذا أضفت ما يلي إلى ملفك ~/.ssh/config :

Host github.com
        User git

يمكنك فرض جميع عمليات تسجيل الدخول إلى github.com عبر SSH لاستخدام المستخدم git افتراضيًا ، وهذا يجعل الغزل قادرًا على النسخ من المستودعات الخاصة عند استخدام تنسيق المصدر ssh://github.com/<user>/<package> .

يعد هذا أمرًا محظورًا بالنسبة لنا ، حيث يعد استخدام مستودعات git المشار إليها (الإشارة إلى مثيل gitlab EE المحلي) جزءًا قويًا من سير العمل لدينا: cry:
كما أنه مفيد جدًا للتقسيم والإشارة إلى حزم "قبل الدمج والنشر npm" (مثل http-proxy ...)

تضمين التغريدة

إذا أضفت ما يلي إلى ملفك ~ / .ssh / config:

لكن التكوين الخاص بي يحتوي بالفعل على بيانات اعتماد ssh الخاصة بي لـ github حتى أتمكن من الوصول إلى repos الخاصة. هذا الحل يعمل فقط مع repos العامة ، أليس كذلك؟

milosivanovicntucker لقد نجح هذا بالفعل في حالتي الخاصة ؛ لم يكن لدي أي ملف تكوين ssh للبدء به.

kblcuk ah ، حسنًا ، كان milosivanovic يتجول في قضايا أخرى ويدعي أن

ntucker الحل البديل المذكور هو للمستودعات الخاصة. إذا كان لديك بالفعل إدخال Host github.com في ~/.ssh/config ، فقم بإضافة User git لهذا الإدخال وسيكون الغزل قادرًا على الاستنساخ عند تحديد سلسلة مصدر مثل ssh://github.com/<user>/<package> ، أي بدون "git +" وبدون تحديد أي مستخدم.

milosivanovic كيف تعرف جيثب اسم المستخدم الخاص بي لإجراء مصادقة ssh بعد ذلك؟

ntucker عند الاتصال عبر SSH ، يتوقع GitHub منك تسجيل الدخول إلى خوادمهم كمستخدم "git". إذا حاولت تسجيل الدخول باسم مستخدم GitHub المعتاد ، فستفشل المصادقة. يميزك GitHub عبر SSH عن طريق مفتاحك العام ، وليس اسم المستخدم. المرجع: https://help.github.com/articles/testing-your-ssh-connection/

فكرت في أن أذكر لأن الكثيرين ربما لا يدركون هذه الميزة. بالنسبة إلى GitHub ، يمكنك أيضًا الاعتماد على عنوان URL لـ tarball الذي يعمل بشكل جيد مع yarn . يثبت بشكل أسرع أيضًا.

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 نعم

واجهت نفس المشكلة ولكن حل ntucker لإضافة User git إلى ~ / .ssh / config ساعدني. على الأقل في بيئة التطوير. سنحاول النشر إلى AWS EB الآن :)

يمكن التأكيد ، أن استخدام git+ssh://[email protected]:<org>/<repo> لا يعمل في yarn والتغيير إلى https://github.com:<org>/<repo> يعمل ، لكن ذلك سيفشل على خادم CI الذي لا يزال يستخدم _NPM _.

ساعدني هذا الحل البديل:

  1. قمت بتغيير عنوان URL الخاص بالمستودع الخاص بي من
git+ssh://git@host/user/private-repo.git 

إلى

ssh://host/user/private-repo.git
  1. تمت إضافة بوابة المستخدم إلى ~ / .ssh / config:
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 الخاص بهم للعمل مع الغزل أو ملف
إعداد npm الحالي ليس خيارًا للأسف.

الأربعاء، 12 أكتوبر 2016، 03:47 سفين Varkel [email protected] كتب:

ساعدني هذا الحل البديل:

  1. قمت بتغيير عنوان URL الخاص بالمستودع الخاص بي من git + ssh: //git@host/user/private-repo.git
    إلى
    ssh: //host/user/private-repo.git
  2. تمت إضافة بوابة المستخدم إلى ~ / .ssh / config:
    "
    استضافة bitbucket.org
    بوابة المستخدم

استضافة github.com
بوابة المستخدم

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253180666 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AHC8CnUaBP_B_FL_AX1xL5FUrEWR-rnPks5qzLrTgaJpZM4KO4Cm
.

diorman وأي شخص يقرأ هذا: أوصي بشدة بعدم إيداع رمز جيثب في ملف package.json في التحكم بالمصادر.

jsdnxx شكرا للإشارة إلى هذا. لقد قفزت للتو إلى مشروع خاص كبير يحتوي على الرمز المميز بالفعل على package.json للاعتمادات الخاصة. سوف تتبع نصيحتك. شكرا لك مرة أخرى

بالنسبة للفروع ، لا يبدو أن حل tarball الخاص بـ https://github.com/yarnpkg/yarn/issues/513#issuecomment -253059522 يعمل ، ربما بسبب التخزين المؤقت. أستخدم Yaska/keystone#yaska-build كاسم حزمة التثبيت ، ويستخدم التزامًا خاطئًا ، وعند استخدام https://github.com/Yaska/keystone/tarball/yaska-build ، لا يزال يستخدم التنفيذ الخاطئ. npm يعالجها بشكل صحيح.

في ملاحظة ذات صلة ، إذا كان لدي yarn link ed تبعية خاصة للريبو محليًا ، فلا يجب أن يتحقق الغزل لمعرفة ما إذا كانت هذه التبعية موجودة في سجل npm ، ولكن الغزل حاليًا يفشل في هذه الحالة بدون أي من الحلول المذكورة في هذا الموضوع.

تعطل الحزمة المقترحة ~ / .ssh / config تحليل الحزمة ، لذا لا تعمل. نأمل أن يتم دمج العلاقات العامة التي تعمل على إصلاح هذا قريبًا ، وإلا ستعود إلى NPM الجيد.

يستخدم الحل البديل لـ gitlab هذا التنسيق:

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

يعمل أيضًا مع المستودع الخاص ، استخدم Gitlab Personal Access Token :

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

Webysther - كما قال jsdnxx :

أوصي بشدة بعدم إيداع رمز github في ملف package.json في التحكم بالمصادر.

من الواضح أن الأمر نفسه ينطبق على GitLab أو أي رموز خاصة أخرى.

Private Token مخصص فقط للمعلمات ، الإصدار الأحدث من Gitlab قادر على إدارة رمز الوصول المتعدد.
أحب استخدام git + ssh في الغزل ...

من مستندات Gitlab:

رموز الوصول الشخصية

يمكنك إنشاء رمز وصول شخصي لكل تطبيق تستخدمه ويحتاج إلى الوصول إلى GitLab API.

رمز خاص

يتم استخدام رمزك المميز للوصول إلى موارد التطبيق بدون مصادقة.

لقد ألقيت نظرة على الكود ويبدو لي أنه مرة واحدة كان git repo
gotten ، لم يعد يتم التحقق من تجزئة الالتزام ، لذلك لا يمكنك تتبع فرع.

هل هذا تقييم صحيح ، وإذا كان الأمر كذلك ، فهل ينتمي إلى فئة مختلفة
القضية؟

يوم الجمعة 14 أكتوبر 2016 الساعة 6:52 صباحًا Webysther Nunes [email protected]
كتب:

الرمز الخاص هو فقط للإصدار الأحدث من Gitlab القادر على إدارته
رمز الوصول المتعدد.
أحب استخدام 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 يمكنني أن أؤكد ما يبدو أنه يعمل مع تثبيت حزمة غزل v0.16.0 git + ssh.
مع الإصدار 0.13.0 ، كان يفشل باستمرار مع error Couldn't find package "<package>" on the "npm" registry. لحزم git + ssh.

@ 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

أدى التحديث إلى الإصدار 0.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 .
بعد yarn add ، يمكنني رؤية الملفات بشكل صحيح داخل node_modules .

مخرجات الغزل 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

لست متأكدًا من سبب منحه 0.1.4 نظرًا لعدم وجود الحزمة في سجل npm ، وحزمة github تحتوي على الإصدار 2.1.3 .

تعديل

أيضًا ، تجدر الإشارة إلى أنه تمت إضافة هذا إلى 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

لدي نفس المشكلة هنا ، ولكن مع عنوان url العام ، وليس أكثر من ssh.

  "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]//.شخص سخيف#". أعمل على تطوير OSX و CentOS 7. لقد اكتشفت أنه مع أحدث إصدارات العقدة 4 (v4.6.1) والعقدة 6 (v6.9.1) ، يعمل الغزل مع هذا التنسيق بدون مشكلة. مع إصدار أقدم من العقدة 4 (v4.4.5) يعمل على OSX ولكن ليس CentOS 7. على وجه التحديد عندما يحاول الغزل تنزيل الريبو فإنه يتوقف إلى الأبد. إذا كنت تواجه نفس المشكلة ، فتأكد من تشغيل أحدث إصدار من العقدة 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 الخاص بمستودع الريبو الخاص بي ، حتى مع / بدلاً من: ، فإن الغزل يحل الريبو الرسمي. (مسؤول: https://github.com/TheLarkInn/angular2-template-loader ، خاص بي: https://github.com/Krisa/angular2-template-loader). لم أتمكن من العثور على حل بديل (بجانب استخدام Npm في الوقت الحالي).

يتطلب التبديل من تبعية ذات إصدار إلى تبعية تاربل yarn cache clean قبل أن تقوم بالفعل بفك حزمة tar مثل node_module الجديدة (Node v6 LTS و yarn v0.16.1).

لقد صوّت جيش من المطورين على هذا ، فهل هناك طريقة يمكننا المساعدة بها؟

@ f-sign يعمل على ذلك ضمن فريقنا. أي شيء تريد المساعدة به من جيش يا (فلافيو)؟

يبدو أن أحد الأجزاء الأساسية لهذه المشكلة هو عدم تناسق package.json و yarn.lock كما هو موضح بواسطة FredyC : لا تحتوي الحزمة package.json على البادئة git+ssh://git@ ، والتي يتم الاحتفاظ بها في yarn.lock أثناء التثبيت . كنت أفكر ، أن الغزل يفضل النظر إلى ملف yarn.lock بدلاً من استرداد معلومات الدقة من package.json

بعد تحرير package.json يدويًا وتعيين البادئة ، سارت الأمور على ما يرام.

maybeec تم حل هذه المشكلة بالفعل في الفرع الرئيسي ... https://github.com/yarnpkg/yarn/issues/1312#issuecomment -258230803

أحسنت صنعًا ، أتطلع إلى الإصدار التالي. أعتقد أنه سيصلح الكثير من المشكلات.

نعم ، أنا مذهول تمامًا ما الذي يعيق عمل الإصدارات الجديدة. هذا هو حوالي شهر الآن؟ أعتقد أنها سياسة فيسبوك صارمة أو ماذا ... 😢

1784 يطلب إصدارًا جديدًا. من فضلك فقط اترك رد فعل ممتاز!

بلدي القضية يصف مشكلة، وهذا هو ما شابه ذلك، على الرغم من أن ليست هي نفسها. نظرت في الشفرة قليلاً ، ووجدت هذا الجزء المثير للاهتمام ، والذي يتم استخدامه بالفعل في كل عنوان url الخاص بـ git:

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

Soooo .... هل يمكن لأي شخص أن يخبرني ، ما سبب إزالة _git + _ لكل عنوان url git يتم تمريره إلى الغزل؟ لا أرى سببًا حقيقيًا ، والرمز يفتقر إلى التوثيق ، لذلك ربما يمكن لشخص ما شرح النية :)

1816 قد يصلح هذا الأمر - ألقِ نظرة على تغييرات الكود - فهو بالتأكيد يصلح مشكلة النقطتين بعد المجال

يبدو أن المشكلة قد تم إصلاحها على الغزل v0.17.0. تمكنت من الحصول على أحد مستودعات Github الخاصة بي على إصدار محدد.

هل تم حل هذه المشكلة؟ أحاول ترحيل مشروعي من npm إلى الغزل ولكن ما زلت أواجه هذه المشكلة مع [email protected] !

viswanathamsantosh يبدو أنه يعمل في جانبي

image

يبدو أن هذا تم إصلاحه هنا https://github.com/yarnpkg/yarn/pull/971 ! استبدال النقطتين (:) بشرطة مائلة (/) عملت بالفعل. : ')

لا يعمل استبدال النقطتين بشرطة مائلة في حالتي :( _git + ssh: //git@private..._ لا يزال يتم ssh: //git@private..._

نعم ما زلت أواجه هذه المشكلة أيضًا ، حتى مع الإصدار 0.17.2 من Yarn. تمت إزالة الجزء git+ وانتهى بي الأمر بـ:

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

بالنظر إلى أنها تعمل مع بعض الأشخاص ، فإنها تجعلني في حيرة من أمري. أي فكرة عما نفعله خطأ؟

ضع هذا في ~ / .ssh / config

Host github.com
        User git

نعم! هذا أصلحها بالنسبة لي. شكر.

سيكون أمرًا رائعًا على الرغم من عدم تشغيل cleanUrl ، لذلك يمكننا الحصول عليه مباشرةً في عنوان URL بدلاً من ذلك. تتطلب الحاجة إلى تغيير ملف التكوين تغيير devops حيث يمكننا التحكم في الإصدار للتعامل معه. لست متأكدا ما هي عملية التفكير وراء هذا ...؟

نفس المشكلة هنا. عناوين المواقع الخاصة بالمستودعات الخاصة لا تعمل كما كانت من قبل (npm).

git + ssh: //[email protected] : يجب أن يعمل ORG / repo.git لأنه يلزم أن يكون متوافقًا مع npm أثناء مرحلة الترحيل ...

DominicBoettger بمجرد إضافة User git إلى ~/.ssh/config بك ، سترغب أيضًا في تغيير هذه النقطتين إلى شرطة مائلة للأمام. في تجربتي اليوم ، لا يلعب 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

لم تختبر العمل الذي تم إجراؤه حتى الآن ولكن على أمل أن يدعم الغزل في النهاية نفس بناء الجملة مثل NPM. هل يجب أن تكون هذه مشكلة جديدة أم أنها لا تزال سارية على هذه المشكلة؟

sarus PR # 1816 سيصلح هذا

يرجى دمج PR # 1816 ونشر نسخة جديدة 👍

دمج؟ شخصا ما؟ NPM يقودني المكسرات !! الرجاء الدمج والإفراج :(

تظل هذه المشكلة في الإصدار 0.18.0.

استدعاء yarn install في مشروع نظيف ، بدون عمل ملفات node_modules و yarn.lock. سيؤدي الاتصال به مرة أخرى مباشرة بعد ذلك إلى ظهور الخطأ "تعذر حل اسم المضيف".

اكتشفت أن إزالة ملف yarn.lock يعمل ، لذلك أفترض أن هناك خطأ ما في ملف القفل أو الطريقة التي يتم بها استنساخ الغزل عند القراءة من ملف القفل.

أتمنى أن يساعدك هذا!

هذه المشكلة هي التي تمنع العديد من المطورين من استخدام الغزل.
نحتاج أن نأخذ هذه القضية على محمل الجد

regou أتفق تمامًا

الناس ، بدلاً من هذا التذمر المستمر الذي لا يعمل فيه أحد ، فقط شاهد ما ذكر PR # 1816 وسترى أنهم يحاولون دمجها ...

يرجى من الجميع لدينا إصلاح لهذا في # 1816 الذي قضيته أنا وفلافيو حوالي عشرة أيام.

ومع ذلك ، فشلت مجموعة مختلفة من الاختبارات اعتمادًا على مكان إجراء الاختبارات.

يرجى إجراء الاختبارات على جهازك والإبلاغ عن النتائج التي حصلت عليها وبيان نظام التشغيل وإصدار العقدة رقم 1816

شكرًا FredyC & BryanCrotaz على توجيه الجميع إلى # 1816. أنا أقفل هذا الخيط في الوقت الحالي.

ثابت عبر # 2384

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات