إذا كنت تعرف كيفية إصلاح المشكلة ، فقم بتقديم طلب سحب بدلاً من ذلك.
@types/express
وواجهت مشاكل.Definitions by:
في index.d.ts
) حتى يتمكنوا من ذلك رد.تقوم بنياتي بإلقاء الأخطاء التالية بعد الترقية إلى أحدث إصدار من @ 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'
يبدو أنه تم إدخال نوع من التغيير المفاجئ ، ولا يمكنني العثور على أي إرشادات حول كيفية معالجته.
قم بإلغاء تثبيت @ 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) { ... }
التعليق الأكثر فائدة
لقد قمت بحل هذه المشكلة مع الغزل من خلال القيام بما يلي:
استمتع بيومك!