Definitelytyped: [@ types / express] أحدث الأنواع تتضمن الخاصية "headers" ، "body" ، "الاستعلام" غير موجود في النوع "Request<any>"</any>

تم إنشاؤها على ٤ نوفمبر ٢٠١٩  ·  30تعليقات  ·  مصدر: DefinitelyTyped/DefinitelyTyped

إذا كنت تعرف كيفية إصلاح المشكلة ، فقم بتقديم طلب سحب بدلاً من ذلك.

  • [X] حاولت استخدام الحزمة @types/express وواجهت مشاكل.
  • [X] حاولت استخدام أحدث إصدار مستقر من tsc. https://www.npmjs.com/package/typescript
  • [X] لدي سؤال غير مناسب لـ StackOverflow . (يرجى طرح أي أسئلة مناسبة هناك).
  • [X] [أذكر] (https://github.com/blog/821-mention-somebody-they-re-notified) المؤلفون (راجع Definitions by: في index.d.ts ) حتى يتمكنوا من ذلك رد.

    • المؤلفون: borisyankov ، cmuh ، @ rockwyc992 ، OliverJAsh

تقوم بنياتي بإلقاء الأخطاء التالية بعد الترقية إلى أحدث إصدار من @ type / express package:

Property 'headers' does not exist on type 'Request<any>'

Property 'query' does not exist on type 'Request<any>'

Property 'body' does not exist on type 'Request<any>'

نحن لم نغير شيئا من جانبنا. لاحظت أيضًا أن بيئة TS الخاصة بي ، عندما أفتح index.d.ts of @ types / express تُظهر الأخطاء التالية:

`express-serve-static-core` has no exported member 'ParamsDictionary'

`express-serve-static-core` has no exported member 'Params'

`express-serve-static-core` has no exported member 'Params'

يبدو أنه تم إدخال نوع من التغيير المفاجئ ، ولا يمكنني العثور على أي إرشادات حول كيفية معالجته.

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

لقد قمت بحل هذه المشكلة مع الغزل من خلال القيام بما يلي:

$ rm -f yarn.lock
$ yarn cache clean
$ yarn

استمتع بيومك!

ال 30 كومينتر

قم بإلغاء تثبيت @ types / express وقم بتثبيت @ types / express-serve-static-core بدلاً من ذلك ، ثم أعد تشغيل برنامج التحويل البرمجي من نوع الكتابة.

نفس المشكلة هنا! إنه يعمل في 4.17.1 ولكن ليس في 4.17.2 ، بحيث يتم كسر تحديث مستوى التصحيح المفترض.

ghostganzduro هل يمكنك تقديم بعض الخطوات إظهار المشكلة؟

هذا الملف يعمل مع 4.17.1:

import { Request } from 'express';

function isHealthCheck(req: Request): boolean {
  return req.method === 'GET' && req.query.healthCheck === 'true';
}

export default isHealthCheck;

مع 4.17.2 نحصل على أخطاء الترجمة هذه:

TS2339: Property 'method' does not exist on type 'Request<any>'.
TS2339: Property 'query' does not exist on type 'Request<any>'.

express-serve-static-core عضو مُصدَّر "ParamsDictionary"

express-serve-static-core عضو مُصدّر "Params"

express-serve-static-core عضو مُصدّر "Params"

يشير هذا إلى أنك بحاجة إلى ترقية @types/express-serve-static-core ، وهي تبعية قدرها @types/express .

واجهت نفس المشكلة ويمكنني أن أؤكد أن تحديث @types/express-serve-static-core إلى 4.16.11 أصلح المشكلة بالنسبة لي. قام ملف قفل الحزمة الخاص بي بقفل الإصدار على 4.16.7 سابقًا.

مع 4.17.2 نحصل على أخطاء الترجمة هذه:

TS2339: Property 'method' does not exist on type 'Request<any>'.
TS2339: Property 'query' does not exist on type 'Request<any>'.

في حالتي ، يعمل أيضًا مع @types/express 4.17.2.

duroghostganz هل يمكنك حذف node_modules ، package-lock.json ، yarn.lock وحاول مرة أخرى؟
إذا لم ينجح الأمر ، يرجى لصق package.json .

هذا الأبسط package.json يعمل مع yarn install ، لكنه لا يعمل مع npm install أو yarn install --flat .

package.json { "dependencies": { "@types/express": "4.17.2", "@types/express-serve-static-core": "4.16.8", "@types/node": "^12.12.5", "typescript": "^3.6.4" } }

لأن @types/express 4.17.2 (# 38887) يعتمد على @types/express-serve-static-core 4.16.9 (# 37718) لتوفير استخدام generic .

حصلت على نفس المشكلة ، تم التحديث للتو إلى 4.17.2 وكسر كل شيء.

فعلت ما سألته @ rockwyc992 حول إزالة قفل الحزمة و node_modules ، فقد حل المشكلة

نفس المشكلة تقفز من 4.17.1 (حيث كان كل شيء يعمل) إلى 4.17.2

نفس. أدى تشغيل rm -rf node modules && rm package-lock.json && npm update إصلاح هذه المشكلة ، ولكن الآن يتم فرض جميع req.params الخاصة بي على السلاسل.

بالتأكيد تغيير كسر وليس رقعة.

نفس المشكلة بين الإصدارين 4.17.1 و 4.17.2

لقد أصلحت هذا في قاعدة الكود الخاصة بي عن طريق تثبيت Express مؤقتًا على 4.17.0:

"dependencies": { "express": "4.17.0" }, "devDependencies": { "@types/express": "4.17.0" }

واجهت نفس المشكلة وقمت بحلها بإضافة "skipLibCheck": true إلى tsconfig.json

بالتأكيد تغيير كسر وليس رقعة.

timshannon أتفق معك ، لكننا بحاجة إلى اتباع الإصدار MINOR بـ Express.js .
ربما يمكننا الاحتفاظ بهذا التغيير باستخدام إصدار جديد Express.js 4.18 .

إنه عمل صعب. أقدم طلب السحب هذا (# 38478) يبدأ في 09/19 ، وتم دمجه أخيرًا في 11/02.
ليس لدي وقت لتتبع هذا الشهر بأكمله ، ربما لفترة أطول مما كنت أعتقد ، فقط للحفاظ على هذا التغيير وعدم كسر أي رموز موجودة.

نأسف على جعلك جميعًا إصدارًا صغيرًا @types/express ، لكن الأمر يستحق جعل Express.js أكثر قربًا من TypeScript وجعل شفرتك أكثر ثباتًا مع Type Checking.

لماذا لم يتم تحديث الإصدار المطلوب من @types/express-serve-static-core في @types/express إذا كان يعمل فقط مع أحدث إصدار؟

لماذا لم يتم تحديث الإصدار المطلوب من @types/express-serve-static-core في @types/express إذا كان يعمل فقط مع أحدث إصدار؟

يتم إنشاء package.json البالغ @types/express بواسطة @ typescript-bot تلقائيًا.

Pajn هل يمكننا تعديل ذلك حسب حاجتنا؟ إذا كان ذلك ممكنًا ، فيرجى تقديم طلب سحب جديد ، شكرًا.

هل يمكننا تعديل ذلك كما نحتاج؟

ليس لدي أي فكرة ، ولكن إذا لم نتمكن من ذلك ، فإن ذلك يبدو وكأنه قيد شديد. هذه ليست المرة الأولى التي يتسبب فيها تحديث التصحيح في حزم types في حدوث مشكلة كبيرة.

DanielRosenwassersandersn هل تعرف ما إذا كان من الممكن ل @types/express لتحديد صيغة الحد الأدنى من @types/express-serve-static-core ؟

يعمل بالنسبة لي yarn remove express-serve-static-core

لا يزال هذا الخطأ موجودًا وقد تلقيته مقابل ^4.17.0 أيضًا.

وجدته.
المشكلة مع ملف القفل. تحتاج ببساطة إلى حذف الأسطر التي تشير إلى express-serve-static-file وإعادة تشغيل yarn أو npm i .

داخل ملف yarn.lock ، هذا ما كان لدي بعد ترقية @types/express إلى 4.17.2 :

"@types/express-serve-static-core@*":
  version "4.16.7"
  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz#50ba6f8a691c08a3dd9fa7fba25ef3133d298049"
  integrity sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==
  dependencies:
    "@types/node" "*"
    "@types/range-parser" "*"

"@types/express@^4.17.2":
  version "4.17.2"
  resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c"
  integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==
  dependencies:
    "@types/body-parser" "*"
    "@types/express-serve-static-core" "*"
    "@types/serve-static" "*"

يمكنك أن ترى عدم تطابق الإصدار.
لذلك قمت بحذف الكتلة الأولى ، yarn مرة أخرى ، وهذا ما لدي الآن:

"@types/express-serve-static-core@*":
  version "4.17.2"
  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf"
  integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg==
  dependencies:
    "@types/node" "*"
    "@types/range-parser" "*"

"@types/express@^4.17.2":
  version "4.17.2"
  resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c"
  integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==
  dependencies:
    "@types/body-parser" "*"
    "@types/express-serve-static-core" "*"
    "@types/serve-static" "*"

لا مزيد من عدم التطابق ، ولا مزيد من الأخطاء.

لقد حصلت عليه للعمل بعد تشغيل yarn remove على جميع الأنواع ذات الصلة السريعة (بما في ذلك Express-jwt) وإعادة إضافتها بعد ذلك.

لقد قمت بحل هذه المشكلة مع الغزل من خلال القيام بما يلي:

$ rm -f yarn.lock
$ yarn cache clean
$ yarn

استمتع بيومك!

بالنسبة لي ، كان سبب المشكلة هو Express-service-static-core الذي تسبب في حدوث المشكلة ، وتم تحديثه إلى أحدث إصدار من express و @ type / express ، وإزالة Express-service-static-core && @ types / express-serve-static-core ، وعملت معي.

في البداية ، اعتقدت أنه كان بسبب محلل الجسم ، لكن كلا.

بالنسبة إلى Windows و npm و VS code مع اكتساب تلقائي للنوع ، قمت بإصلاح هذا بالانتقال إلى %localappdata%\Microsoft\TypeScript\ ، انتقل إلى مجلد الإصدار الأخير ، على سبيل المثال: 3.9 وقم بتشغيل npm install @types/express-serve-static-core

لست متأكدًا من سبب عدم تثبيت @types/express-serve-static-core هناك لجهازي الرئيسي الذي كان يستخدم الكتابة المطبوعة لفترة طويلة. ولكن بالنسبة إلى الجهاز الجديد الخاص بي ، فقد تم تثبيته بالفعل هناك.

تحديث:
أفكر في تشغيل npm update هناك أيضًا يعمل.

لا تزال هذه مشكلة في عام 2020. أعني أن هناك الكثير من الأشياء الخاطئة في عام 2020 ولكن هذا مستمر منذ عام 2017 مثل هيا يا رفاق

@ xtianus79 TBH و koa و fastify هي خيارات إطار عمل أفضل بكثير في عام 2020. كان Express يعمل بشكل جيد ، لكنه الآن من الواضح أنه تحرير قديم.

كانت الإجابة بالنسبة لي هي تثبيت @types/express-serve-static-core بالإضافة إلى @types/express .

من package.json :

    "@types/express": "^4.17.6",
    "@types/express-serve-static-core": "~4.17.7"

تلقيت الأخطاء التالية عند ترقية @types/express من "4.17.2" إلى "4.17.6":

error TS2694: Namespace '"@types/express-serve-static-core/index"' has no exported member 'Query'.
error TS2707: Generic type 'ErrorRequestHandler' requires between 0 and 3 type arguments.
error TS2694: Namespace '"@types/express-serve-static-core/index"' has no exported member 'Query'.
error TS2707: Generic type 'Request<P, ResBody, ReqBody>' requires between 0 and 3 type arguments.
error TS2694: Namespace '"@types/express-serve-static-core/index"' has no exported member 'Query'.
error TS2707: Generic type 'RequestHandler<P, ResBody, ReqBody>' requires between 0 and 3 type arguments.

اتصلت بـ yarn why @types/express-serve-static-core وتحققت من الإصدار الذي أملكه:

info Reasons this module exists
   - "@types#express" depends on it
   - Hoisted from "@types#express#@types#express-serve-static-core"

ساعدني تشغيل yarn upgrade --latest في مشروعي لأنه حدَّث الإصدار الأساسي من "@ types / express-serve-static-core" في yarn.lock .

لا تزال هذه مشكلة ، قم بتثبيت أحدث الأنواع السريعة / السريعة للخدمة الثابتة. تكمن المشكلة عند توسيع واجهة الطلب.

interface ExampleRequest extends Request {
  example: any
}
// No overload matches this call...
router.use('/api', async function (req:ExampleRequest, res, next) { ... }
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات