Tslint: كتابة تبعية الأقران غير المستوفاة @> = 1.6.2

تم إنشاؤها على ٢٢ نوفمبر ٢٠١٥  ·  43تعليقات  ·  مصدر: palantir/tslint

أحاول تثبيت tslint 3.0.0 ولكنه يظل يقول "Unmet Peer Dependency typescript @> = 1.6.2"

كيف يمكنني التخلص من هذا؟

External Question

التعليق الأكثر فائدة

لا يتم تثبيت تبعيات الأقران تلقائيًا بواسطة npm v3.x (كانت تلقائية في 1.x و 2.x).

هل قمت بتثبيت typescript بجانب tslint ؟

تحديث

لصق "الحل" هنا حتى لا تضطر إلى التمرير لرؤيته:

هذا هو خطأ قابلية الاستخدام NPM. الحل الوحيد هو التثبيت المتزامن:

npm install -g tslint typescript

ال 43 كومينتر

لا يتم تثبيت تبعيات الأقران تلقائيًا بواسطة npm v3.x (كانت تلقائية في 1.x و 2.x).

هل قمت بتثبيت typescript بجانب tslint ؟

تحديث

لصق "الحل" هنا حتى لا تضطر إلى التمرير لرؤيته:

هذا هو خطأ قابلية الاستخدام NPM. الحل الوحيد هو التثبيت المتزامن:

npm install -g tslint typescript

لقد قمت بتثبيت كل من tslint و printcript على المستوى العالمي. النسخة المطبوعة الحالية 1.6.2

أحاول أيضًا القيام بذلك على Windows.

الحصول على نفس المشكلة عند التثبيت النظيف على OSX باستخدام توزيع المشروب nodejs .

لا يبدو أن هذا يحدث في صندوق CentOS الخاص بي.

هنا لإعادة الإنتاج باستخدام بادئة مخصصة (لذلك لست بحاجة إلى التخلص من الوحدات النمطية الحالية):

leonyu-workstation:~$ npm config set prefix hihi
leonyu-workstation:~$ npm list -g


leonyu-workstation:~$ npm install typescript -g
/Users/leonyu/hihi/bin/tsc -> /Users/leonyu/hihi/lib/node_modules/typescript/bin/tsc
/Users/leonyu/hihi/bin/tsserver -> /Users/leonyu/hihi/lib/node_modules/typescript/bin/tsserver
/Users/leonyu/hihi/lib
└── [email protected]

leonyu-workstation:~$ npm install tslint -g
/Users/leonyu/hihi/bin/tslint -> /Users/leonyu/hihi/lib/node_modules/tslint/bin/tslint
/Users/leonyu/hihi/lib
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   ├─┬ [email protected]
│ │   │ └── [email protected]
│ │   ├── [email protected]
│ │   ├─┬ [email protected]
│ │   │ └─┬ [email protected]
│ │   │   ├── [email protected]
│ │   │   └── [email protected]
│ │   └── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ └── [email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.6.2

npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.6.2 but none was installed.
leonyu-workstation:~$

هل هو مجرد تحذير تم إصداره هنا؟ أم أن tslint العالمي الخاص بك لا يعمل بالفعل إذا حاولت تشغيله؟ قد يكون هذا خطأ NPM (تحذير إيجابي كاذب منهم).

بعد اللعب بها قليلاً ، يبدو أن tslint يعمل بشكل جيد. قد يكون خطأ npm. سأقدم المزيد من المعلومات بعد المزيد من الاختبارات.

أيضا لديها نفس المشكلة

adidahiya الجدير بالذكر أن tslint v3.0.0 به peerDepedency مدرج على النحو التالي:

  "peerDependencies": {
    "typescript": ">=1.6.2"
  }

مما يعني أنك إذا كنت تستخدم إصدارًا تجريبيًا (أو أي مصطلح يستخدمه npm ) من TypeScript ، فإنه يعتبر أن تبعية الأقران لم يتم الوفاء بها:

$ npm install --save-dev [email protected]
npm WARN install Couldn't install optional dependency: Unsupported
[email protected] /home/myitcv/tmp/typescript_test
├── [email protected]
└── UNMET PEER DEPENDENCY [email protected]

ومع ذلك ، فإن الفرع next (وهو عدد من الارتباطات خلف v3.0.0 ) يحتوي على ما يلي:

  "peerDependencies": {
    "typescript": ">=1.7.0 || >=1.7.0-dev.20151003 || >=1.8.0-dev"
  }

وهو ما يرضي تمامًا الإصدار التجريبي.

مرة أخرى ، يمكن ببساطة تجاهل هذا التحذير. لكن تجدر الإشارة إلى هؤلاء الأشخاص الذين يحاولون الآن تثبيت 3.0.0 مقابل إصدار next من TypeScript.

ما لم تكن سعيدًا بتضمين خيارات تبعية الأقران قبل الإصدار في الإصدارات الرئيسية tslint ؟ أي ضرر في فعل هذا؟

myitcv نعم لقد فكرنا في هذا قليلاً ... أفضل الاحتفاظ بإصدارات tslint المستقرة مرتبطة بالإصدارات المستقرة من الكتابة المطبوعة ، وإذا أراد المستخدمون وظيفة next ، فيجب عليهم استخدام next توزيع كل المكتبات

adidahiya لكن هذا يحدث مع الإصدار

@ helios1138 إنه مجرد خطأ ، أليس كذلك؟ هل يعمل النظام الثنائي الخاص بك tslint على الرغم من الخطأ؟ هل تقوم بالتثبيت عالميا؟ بحاجة الى مزيد من المعلومات ...

@ helios1138 - إذا كنت تقوم بتثبيت كليهما عالميًا ، فمن المحتمل أن تكون هذه مشكلة npm كما تم ذكره في المنشورات الأخرى في سلسلة الرسائل .

adidahiya يفهم. نتطلع إلى تحديث توزيع next لـ tslint : +1:

gclifford @ helios1138 هل يمكنك محاولة تشغيل npm cache clean قبل التثبيت؟ قد تكون مرتبطة بهذه المشكلة: https://github.com/npm/npm/issues/10365

أواجه بعض المشكلات في ذلك ، يعطيني npm هذا التحذير عند التثبيت ، لا يكون مع gulp-tslint@latest ، ولكن في كلتا الحالتين عند محاولة استخدامه ، يظهر خطأ مثل:

aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ npm i --save gulp-tslint<strong i="7">@latest</strong>
npm WARN deprecated [email protected]: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^3.0.0.
npm WARN [email protected] requires a peer of tslint@^3 || >=3.1.0-dev but none was installed.
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ gulp tslint
module.js:340
    throw err;
    ^

Error: Cannot find module 'tslint'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:289:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/Users/aplicaciones2/Documents/Programming/OSGroup/taoappionic/node_modules/gulp-tslint/index.js:7:14)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)

أي أفكار حول كيفية الإصلاح حتى بعد npm cache clean ؟ ، إذا قمت بتثبيت [email protected] الذي تم حله إلى 3.6.0 فإنه يعمل ، لذا يجب أن يكون هناك مشكلة في المستودع gulp-tslint .

Luchillo يبدو أنك قمت فقط بتثبيت gulp-tslint وليس tslint هناك

هل انفصلت؟ لماذا مع v3.6.0 لا يزال يعمل؟ بقدر ما أفهم أن gulp-tslint عبارة عن غلاف لحزمة tslint npm ، أليس كذلك؟

Luchillo لا ، إنه ليس تبعية للأقران ، لذلك لا يتم تثبيت tslint تلقائيًا. تحتاج إلى npm install حد سواء. https://nodejs.org/en/blog/npm/peer-dependencies/

أوه بما أنني استخدمت للتو الإصدار 3.6.0 قبل أن لا أعرف شيئًا عن التغيير ، ولكن يجب تثبيته في مشروع محلي أو عالمي أو كليهما؟

كما أن تبعية الأقران لـ [email protected] تشير إلى أنه لم يتم تلبيتها أيضًا ، حتى مع تثبيت الكتابة المطبوعة:

aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ npm i -g typescript
/usr/local/bin/tsc -> /usr/local/lib/node_modules/typescript/bin/tsc
/usr/local/bin/tsserver -> /usr/local/lib/node_modules/typescript/bin/tsserver
/usr/local/lib
└── [email protected] 

aplicaciones2@MacBook-Pro-de-aplicacioes-2:~/Documents/Programming/OSGroup/taoappionic$ npm i -g tslint
/usr/local/bin/tslint -> /usr/local/lib/node_modules/tslint/bin/tslint
/usr/local/lib
├── [email protected] 
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.
npm WARN In [email protected] replacing bundled version of findup-sync with [email protected]
npm WARN In [email protected] replacing bundled version of optimist with [email protected]
npm WARN In [email protected] replacing bundled version of underscore.string with [email protected]
npm WARN In [email protected] replacing bundled version of glob with [email protected]
npm WARN In [email protected] replacing bundled version of once with [email protected]
npm WARN In [email protected] replacing bundled version of inherits with [email protected]
npm WARN In [email protected] replacing bundled version of inflight with [email protected]
npm WARN In [email protected] replacing bundled version of minimatch with [email protected]
npm WARN In [email protected] replacing bundled version of wrappy with [email protected]
npm WARN In [email protected] replacing bundled version of brace-expansion with [email protected]
npm WARN In [email protected] replacing bundled version of concat-map with [email protected]
npm WARN In [email protected] replacing bundled version of balanced-match with [email protected]
npm WARN In [email protected] replacing bundled version of wordwrap with [email protected]
npm WARN In [email protected] replacing bundled version of minimist with [email protected]

قامLuchillo gulp -tslint بتحديث نسخته إلى 4.x ، مما يعني أن هناك تغييرات فاصلة من 3.x.

بالنسبة إلى تحذير "تبعية الأقران غير المستوفاة" ، هذا ما يدور حوله الخيط أعلاه - أعتقد أنه خطأ NPM. هل تختفي إذا ألغيت التثبيت وشغلت npm cache clean وأعدت التثبيت عالميًا؟

تضمين التغريدة
مرحبًا ، أتلقى نفس التحذير ، حتى بعد npm cache clean
كلاهما مثبت عالميًا.

npm ls -g
├── [email protected]
├── [email protected]

when installing
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

هذا غريب. إنها إما UNMET PEER DEPENDENCY أو غريبة ، انظر أدناه.

لذلك عليك أن تختار بين خطأين. إذا كنت لا تحب الكتابة بالأحرف الكبيرة حقًا ، فيمكنك إجراء npm install typescript أو حتى npm install typescript --save-dev إذا كنت ترغب في توفير هذه العواصم للزملاء في المستقبل. لكنني اخترت إلغاء التثبيت مرة أخرى ، نظرًا لأن الأمور كانت تسير على ما يرام بشكل عام.

├── [email protected] extraneous   <---
├── [email protected]
├── [email protected]
└── [email protected] (git+https://4c2b0edc3e30fscrambled:[email protected]/company/project/.git#f9fscrambled101)

npm ERR! extraneous: [email protected] C:\Code\project\node_modules\typescript
npm ERR! peer dep missing: kerberos@~0.0, required by [email protected]

C:\Code\project>npm uninstall typescript
- [email protected] node_modules\typescript
[email protected] C:\Code\project\
├── [email protected]
├── [email protected]
├── [email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.7.3   <---

npm WARN [email protected] requires a peer of kerberos@~0.0 but none was installed.
npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

C:\Code\project/>

نفس المشكلة هنا مع Ubuntu و npm 3.3.12

sim@sim-desktop:~/code/btsync/HTML/refugees$ sudo npm install -g typescript
/usr/bin/tsc -> /usr/lib/node_modules/typescript/bin/tsc
/usr/bin/tsserver -> /usr/lib/node_modules/typescript/bin/tsserver
/usr/lib
└── [email protected] 

sim@sim-desktop:~/code/btsync/HTML/refugees$ sudo npm install -g tslint
/usr/bin/tslint -> /usr/lib/node_modules/tslint/bin/tslint
/usr/lib
├── [email protected] 
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

أردت فقط الإبلاغ عن نفس المشكلة على نظام التشغيل Windows 10 والعقدة 5.7.1 و npm 3.5.3 و typecript 1.8.7:

C:\Users\cmezzasalma\Sviluppo\SmartScarlett>npm install -g typescript
C:\Users\cmezzasalma\AppData\Roaming\npm\tsc -> C:\Users\cmezzasalma\AppData\Roaming\npm\node_modules\typescript\bin\tsc
C:\Users\cmezzasalma\AppData\Roaming\npm\tsserver -> C:\Users\cmezzasalma\AppData\Roaming\npm\node_modules\typescript\bin\tsserver
C:\Users\cmezzasalma\AppData\Roaming\npm
└── [email protected]


C:\Users\cmezzasalma\Sviluppo\SmartScarlett>npm install -g tslint
C:\Users\cmezzasalma\AppData\Roaming\npm\tslint -> C:\Users\cmezzasalma\AppData\Roaming\npm\node_modules\tslint\bin\tslint
C:\Users\cmezzasalma\AppData\Roaming\npm
├── [email protected]
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

لدي نفس المشكلة في Win 8 مع TypeScript 1.8.7

C: \ Windows \ system32> npm install -g tslint
C: \ Users \ indika \ AppData \ Roamingnpmtslint -> C: \ Users \ indika \ AppData \ Roaming \
npmnode_modulestslint \ bintslint
C: \ Users \ indika \ AppData \ Roamingnpm
├── [email protected]
└── UNMET PEER DEPENDENCY typecript @> = 1.7.3

npm تحذير EPEERINVALID يتطلب [email protected] نظيرًا من الكتابة المطبوعة @> = 1.7.3 ولكن غير
تم تثبيت البريد.

مجرد صوت رنين للقول إن لدي نفس المشكلة على OSX مع العقدة v5.7.0 و npm 3.6.0

لدي نفس المشكلة على OS X مع npm 3.7.3

أعتقد أن هذا خطأ في قابلية الاستخدام NPM ، والحل الوحيد هو تثبيت الأقران بشكل متزامن: npm install -g tslint typescript .

ذات صلة: https://github.com/npm/npm/issues/9857

يبدو أن تثبيتها بشكل متزامن تعمل ، ولا توجد رسالة تحذر! شكرا adidahiya

تحديث لهذا ، لدي هذه المشكلة ، مع نسخة مطبوعة 1.8.10.
npm WARN EPEERINVALID [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

adidahiya يبدو أن tslint غير قابل للتثبيت حاليًا مع الإصدار المطبوع 2.1.0-dev على NPM 2 بسبب فشل تبعية الأقران (انظر # 1401). هل هناك حل بديل لهذا بخلاف إجبار TravisCI (والمطورين لدينا) على استخدام NPM 3 لإصدارات Node القديمة؟

@ Turbo87 هممم ، هل أنت متأكد؟ يبدو أن هذا الخط يشير إلى أن 2.1.0-dev سيعمل: https://github.com/palantir/tslint/blob/next/package.json#L49. هل تعلم أن NPM v2 يعمل بشكل مختلف هنا؟

آه ، فالشيء هو أننا كنا نستخدم القيد ^3.14.0-dev.0 لـ tslint ، ولكن منذ إصدار 3.14.0 ، فإنه يلبي القيد ويزيل قيد peerDependency المريح على الكتابة المطبوعة مرة أخرى. هل كان ذلك متعمدا؟ هل نقوم بشيء خاطئ هنا؟

@ Turbo87 لقد كان مقصودًا ، على الرغم من أنه نتيجة ثانوية مؤسفة لكيفية -dev.x هو إصدار مصمم للعمل مع أحدث الإصدارات التجريبية من TS ، وتحديداً سطر 2.x الآن.

تم تصميم أي إصدار بخلاف -dev.x للعمل مع typescript@latest ، والذي يبلغ حاليًا 1.8.10 في الوقت الحالي.

إذا كنت تريد الاعتماد على أحدث إصدارات TSLint التي تتوافق مع أحدث إصدارات TS ، فإنني أوصي إما بالاعتماد على tslint@next أو على إصدار واحد محدد من TSLint.

JKillian شكرا للتوضيح! نظرًا لأن تبعيات الأقران هي معلوماتية فقط في NPM v3 وتتسبب في حدوث هذه المشكلات غير المتوقعة في NPM v2 ، فهل من المنطقي استبدال تبعية الأقران بملاحظة توافق في ملف README بدلاً من ذلك؟

حسنًا ، ربما أسأت الفهم ، لكن أليست مشكلتك قابلة للحل فقط من خلال تغيير كيفية تحديد التبعية على TSLint؟ أنا متردد في إزالة اعتماد peerDepedency لأنه ، على الرغم من كونه معلوماتي بشكل أساسي ، إلا أنه يمثل إصدارات TS الصحيحة التي تم تصميم كل حزمة للعمل معها.

أليست مشكلتك قابلة للحل فقط من خلال تغيير كيفية تحديد التبعية على TSLint؟

نعم ، سيؤدي تثبيت التبعية إلى حل المشكلة ، لكن من الواضح أننا لن نحصل على أي تحديثات بهذه الطريقة.

أنا متردد في إزالة اعتماد peerDepedency لأنه ، على الرغم من كونه معلوماتي بشكل أساسي ، إلا أنه يمثل إصدارات TS الصحيحة التي تم تصميم كل حزمة للعمل معها.

تعليقان على ذلك:

  • المشكلة هي أنها في الحقيقة ليست مجرد معلوماتية عن NPM v2. إذا كنت تريد أن يكون مجرد معلومات ، فيجب أن يكون في README بدلاً من ذلك. (البديل هو إجبار المستخدمين على استخدام NPM v3 ، ولكن نظرًا لأنه تم شحن NPM v2 حتى Node 4 ، فهذا ليس خيارًا رائعًا حقًا)
  • قلت إن -dev مصمم للعمل مع TS-dev ، بينما غير المطورين ليس كذلك ، أليس كذلك؟ ولكن إذا كان غير المطورين يعتمد على إصدارات المطورين ، فلماذا لا يتم تصميم غير المطورين للعمل مع TS-dev أيضًا؟

أنا بخير مع كل ما تقرر هو الحل الأفضل ، أود فقط أن أفهمه ... 😉

يمكننا حتى أن نذهب إلى أبعد من ذلك بالنشر في حزمتين مختلفتين ، لكنني أشعر أن هذا أمر مزعج لمكتبات الطرف الثالث التي تدمج TSLint وللمستخدمين.

قلت أن -dev مصمم للعمل مع TS-dev ، بينما غير المطورين ليس كذلك ، أليس كذلك؟ ولكن إذا كان غير المطورين يعتمد على إصدارات المطورين ، فلماذا لا يتم تصميم غير المطورين للعمل مع TS-dev أيضًا؟

حسنًا ، النسختان _ تقريبًا_ متطابقتان ، ولكن قد يكون هناك اختلاف قليلًا. تحتوي إصدارات -dev على أجزاء من التعليمات البرمجية التي تتعامل مع ميزات اللغة الجديدة بشكل صحيح ، ولن تعمل أجزاء التعليمات البرمجية هذه مع إصدار أقدم من TS. هذه الأجزاء من التعليمات البرمجية ليست أيضًا في الإصدارات غير المطورة.

أنا قلق إذا تمت إزالة peerDependency ، سينتهي الأمر بالناس بإصدارات غير متوافقة من TS و TSLint مثبتة ولا يعرفون ما الذي كان يحدث. الأمور كما هي الآن ليست مثالية على الرغم من أنك أشرت بشكل صحيح ، لذا فأنا لست متأكدًا من الحل الأفضل.

سيكون من الجيد أن يكون @next دائمًا أحدث من @latest . ربما يمكن فقط أتمتة هذا بواسطة CI.

يؤدي هذا أيضًا إلى تعطل npm shrinkwrap مع الإصدار المطبوع عليه ^ 1.9.0-dev المطلوب بواسطة @angular/compiler-cli و @angular/tsc-wrapped - ts 1.8.10 منخفض جدًا لهذه الحزم و 1.9.0-dev يسبب نظير غير صالح على tslint.

تحرير: npm 3.10.x

+1

+-- [email protected]
`-- UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.

C:\Windows\system32>tsc -v
Version 1.8.10

لا يمكن البدء في العمل مع vscode 1.4.0

sudo npm i tslint -g 
......
└── UNMET PEER DEPENDENCY typescript@>=1.7.3

npm WARN [email protected] requires a peer of typescript@>=1.7.3 but none was installed.
$ tslint --version
3.15.1

يظهر الخطأ في الجزء العلوي من vscode: فشل تحميل مكتبة tslint. الرجاء تثبيت tslint في مساحة العمل الخاصة بك

حاولت تعيين "tslint.enable": صحيح | خطأ (في مساحة المستخدمين ومساحة العمل) - لم يساعد ذلك.

$ npm --version
3.10.3

$ node --version
v6.4.0

اي نصيحه؟

لقد قمت بتغيير package.json الخاص بي لاستخدام ما يلي وهو يعمل الآن على Node v4 حتى الإصدار 6:

  "devDependencies": {
    "tslint": "3.15.0-dev.0",
    "typescript": "^2.1.0-dev.20160827"
  },

إغلاق هذه المشكلة لأنها مشكلة متعلقة بالآلية الوقائية الوطنية وخارجة عن سيطرتنا

🤖 بيب بوب! 👉 تم إهمال TSLint 👈 ويجب عليك التبديل إلى print-eslint ! 🤖

🔒 تم إقفال هذه المشكلة لمنع المزيد من المناقشات غير الضرورية. شكرا لك! 👋

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