Definitelytyped: [@ types / express] Los tipos más recientes lanzan Propiedad 'encabezados', 'cuerpo', 'consulta' no existe en el tipo 'Solicitud<any>'</any>

Creado en 4 nov. 2019  ·  30Comentarios  ·  Fuente: DefinitelyTyped/DefinitelyTyped

Si sabe cómo solucionar el problema, realice una solicitud de extracción.

  • [X] Intenté usar el paquete @types/express y tuve problemas.
  • [X] Intenté usar la última versión estable de tsc. https://www.npmjs.com/package/typescript
  • [X] Tengo una pregunta que no es apropiada para StackOverflow . (Haga las preguntas correspondientes allí).
  • [X] [Mencione] (https://github.com/blog/821-mention-somebody-they-re-notified) a los autores (consulte Definitions by: en index.d.ts ) para que puedan responder.

    • Autores: @borisyankov , @cmuh , @ rockwyc992 , @OliverJAsh

Mis compilaciones arrojan los siguientes errores después de las actualizaciones a la última versión del paquete @ types / express:

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

No hemos cambiado nada por nuestra parte. También noté que mi entorno TS, cuando abro el index.d.ts de @ types / express muestra los siguientes errores:

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

Parece que se ha introducido algún tipo de cambio radical, y parece que no puedo encontrar ninguna guía sobre cómo abordarlo.

Comentario más útil

Resolví este problema con hilo haciendo:

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

¡Ten un buen día!

Todos 30 comentarios

Desinstale @ types / express e instale @ types / express-serve-static-core en su lugar, luego simplemente reinicie el compilador de mecanografiado.

¡El mismo problema aqui! Funciona en 4.17.1 pero no en 4.17.2, por lo que supuestamente se está rompiendo la actualización a nivel de parche.

@ghostganz @duro ¿Podría proporcionar algunos pasos para reproducir el problema?

Este archivo funciona con 4.17.1:

import { Request } from 'express';

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

export default isHealthCheck;

Con 4.17.2 obtenemos estos errores de compilación:

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

express-serve-static-core no tiene miembro exportado 'ParamsDictionary'

express-serve-static-core no tiene ningún miembro exportado 'Params'

express-serve-static-core no tiene un miembro exportado 'Params'

Esto sugiere que necesita actualizar @types/express-serve-static-core , que es una dependencia de @types/express .

Tuve el mismo problema y puedo confirmar que la actualización de @types/express-serve-static-core a 4.16.11 solucionó el problema. Mi archivo de bloqueo de paquete había bloqueado la versión en 4.16.7 anteriormente.

Con 4.17.2 obtenemos estos errores de compilación:

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

En mi caso, también funciona con @types/express 4.17.2.

@duro @ghostganz ¿Podrías borrar node_modules , package-lock.json , yarn.lock e intentarlo de nuevo?
Si no funciona, pegue su package.json .

Este package.json más simple funciona con yarn install , pero no funciona con npm install o 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" } }

Porque @types/express 4.17.2 (# 38887) depende de @types/express-serve-static-core 4.16.9 (# 37718) para proporcionar generic uso.

Tengo el mismo problema, acabo de actualizar a 4.17.2 y todo se rompió.

Hice lo que @ rockwyc992 preguntó sobre la eliminación de package-lock y node_modules, soluciona el problema

El mismo problema salta de 4.17.1 (donde todo estaba funcionando) a 4.17.2

Mismo. Ejecutar rm -rf node modules && rm package-lock.json && npm update solucionó ese problema, pero ahora todos mis parámetros req.están forzados en cadenas.

Definitivamente un cambio rotundo y no un parche.

Mismo problema entre las versiones 4.17.1 y 4.17.2

Arreglé esto en mi código base fijando temporalmente express a 4.17.0:

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

Tuve el mismo problema y lo resolví con "skipLibCheck": true agregado a tsconfig.json

Definitivamente un cambio rotundo y no un parche.

@timshannon Estoy de acuerdo contigo, pero debemos seguir la versión MINOR con Express.js .
Tal vez podamos mantener este cambio util Express.js nueva versión publicada 4.18 .

Es un trabajo dificil. Hago que esta solicitud de extracción (# 38478) comience el 19/09, y finalmente se fusionó el 02/11.
No tengo tiempo para rastrear todo este mes, tal vez más de lo que pensaba, solo para mantener este cambio sin romper ningún código existente.

Lo siento por hacer que todas las versiones mejoradas de @types/express , pero vale la pena hacer Express.js más cerca con TypeScript y hacer que su código sea más estable con la verificación de tipos.

¿Por qué no se actualiza la versión requerida de @types/express-serve-static-core en @types/express si solo funciona con la última versión?

¿Por qué no se actualiza la versión requerida de @types/express-serve-static-core en @types/express si solo funciona con la última versión?

El package.json de @types/express es generado automáticamente por @ typescript-bot.

@Pajn ¿Podríamos modificar eso como necesitemos? Si puede, haga una nueva solicitud de extracción, gracias.

¿Podríamos modificar eso como necesitemos?

No tengo idea, pero si no podemos, parece una limitación severa. Esta no es la primera vez que una actualización de parche en paquetes de

@DanielRosenwasser @sandersn ¿Sabe si sería posible para @types/express especificar una versión mínima de @types/express-serve-static-core ?

funciona para mí yarn remove express-serve-static-core

Este error aún persiste y lo recibo por ^4.17.0 también.

Lo encontré.
El problema está en el archivo de bloqueo. Simplemente necesita eliminar las líneas que hacen referencia a express-serve-static-file y reiniciar un yarn o npm i .

Dentro de mi archivo yarn.lock , esto es lo que tenía después de una actualización de @types/express a 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" "*"

Puede ver la falta de coincidencia de la versión.
Así que eliminé el primer bloque, yarn nuevamente, y esto es lo que tengo ahora:

"@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" "*"

No más desajustes y no más errores.

Lo hice funcionar después de ejecutar yarn remove en todos los tipos relacionados con express (incluido express-jwt) y volver a agregarlos después.

Resolví este problema con hilo haciendo:

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

¡Ten un buen día!

Para mí, fue express-serve-static-core el que causó el problema, actualizado a la última versión de express y @ types / express, eliminado express-serve-static-core && @ types / express-serve-static-core, y trabajó para mí.

Al principio, pensé que se debía al analizador corporal, pero no.

Para Windows, código npm y VS con adquisición automática de tipos, arreglé esto yendo a %localappdata%\Microsoft\TypeScript\ , vaya a la carpeta de la última versión, por ejemplo: 3.9 y ejecute npm install @types/express-serve-static-core

No estoy seguro de por qué @types/express-serve-static-core no está instalado allí para mi máquina principal que ha estado usando mecanografiado durante bastante tiempo. Pero para mi otra máquina nueva, ya está instalada allí.

Actualizar:
Creo que ejecutar npm update allí también funciona.

esto sigue siendo un problema en 2020. Quiero decir, hay muchas cosas mal en 2020, pero esto ha estado persistiendo desde 2017, como vamos chicos

@ xtianus79 TBH, koa y fastify son opciones de marco mucho mejores en 2020. Express tuvo una buena ejecución, pero ahora es obviamente una biblioteca heredada.

La respuesta para mí fue instalar explícitamente @types/express-serve-static-core además de @types/express .

De mi package.json :

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

Recibí los siguientes errores al actualizar @types/express de "4.17.2" a "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.

Llamé a yarn why @types/express-serve-static-core y verifiqué qué versión tengo:

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

Ejecutar yarn upgrade --latest en mi proyecto ayudó porque actualizó la versión subyacente de "@ types / express-serve-static-core" en yarn.lock .

Esto sigue siendo un problema, instalado los últimos tipos express / express-serve-static-core. El problema es cuando se amplía la interfaz de solicitud.

interface ExampleRequest extends Request {
  example: any
}
// No overload matches this call...
router.use('/api', async function (req:ExampleRequest, res, next) { ... }
¿Fue útil esta página
0 / 5 - 0 calificaciones