λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ μκ³ μλ€λ©΄ λμ ν 리νμ€νΈλ₯Ό νμμμ€.
@types/express
ν¨ν€μ§λ₯Ό μ¬μ©ν΄ 보μλλ° λ¬Έμ κ° λ°μνμ΅λλ€.Definitions by:
in index.d.ts
) λλ΅νλ€.@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>'
μ°λ¦¬λ μ°λ¦¬ μͺ½μμ μ무κ²λ λ°κΎΈμ§ μμμ΅λλ€. λν λ΄ TS νκ²½μμ @types/expressμ index.d.tsλ₯Ό μ΄ λ λ€μ μ€λ₯κ° νμλλ€λ μ¬μ€λ νμΈνμ΅λλ€.
`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 λ₯Ό μ€μΉν λ€μ typescript μ»΄νμΌλ¬λ₯Ό λ€μ μμνμΈμ.
μ¬κΈ°μλ κ°μ λ¬Έμ ! 4.17.1μμλ μλνμ§λ§ 4.17.2μμλ μλνμ§ μμΌλ―λ‘ ν¨μΉ μμ€ μ λ°μ΄νΈκ° μ€λ¨λ©λλ€.
@ghostganz @duro λ¬Έμ λ₯Ό μ¬ννκΈ° μν λͺ κ°μ§ λ¨κ³λ₯Ό μ 곡ν μ μμ΅λκΉ?
μ΄ νμΌμ 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
μ μ’
μμ±μΈ @types/express-serve-static-core
λ₯Ό μ
κ·Έλ μ΄λν΄μΌ ν¨μ λνλ
λλ€.
λλ κ°μ λ¬Έμ κ° μμκ³ @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μμλ μλν©λλ€.
@duro @ghostganz 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)λ generic
μ¬μ©μ μ 곡νκΈ° μν΄ @types/express-serve-static-core
4.16.9(#37718)μ μμ‘΄νκΈ° λλ¬Έμ
λλ€.
λμΌν λ¬Έμ κ° λ°μνμ¬ 4.17.2λ‘ μ λ°μ΄νΈνλλ° λͺ¨λ κ²μ΄ μ€λ¨λμμ΅λλ€.
λλ @rockwyc992 κ° package-lock λ° 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 λμνμ§λ§ Express.js
λ§μ΄λ λ²μ μ λ°λΌμΌ ν©λλ€.
Express.js
릴리μ€λ μ λ²μ 4.18
μ΄ λ³κ²½ μ¬νμ μ μ§ν μ μμ΅λλ€.
μ΄λ €μ΄ μμ
μ
λλ€. μ΄ pull μμ²(#38478)μ 09/19μ μμνκ³ 11/02μ λ§μΉ¨λ΄ λ³ν©νμ΅λλ€.
μ΄ λ³κ²½ μ¬νμ΄ κΈ°μ‘΄ μ½λλ₯Ό μμμν€μ§ μλλ‘ μ μ§νκΈ° μν΄ μ΄ ν λ¬ λμ, μ΄μ©λ©΄ μκ°λ³΄λ€ λ μ€λ μΆμ ν μκ°μ΄ μμ΅λλ€.
μ£μ‘ν©λλ€ λΉμ μ λͺ¨λ λ²ν λ²μ λ§λ€κΈ°μ λν΄ @types/express
κ°μΉ λ§μ λ§λ€κΈ° μν΄ Express.js
λ κ°κΉμ΄μ TypeScript
λ° μ ν κ²μ¬μ μ½λλ³΄λ€ μμ μν©λλ€.
μμ λ²μ μ΄ νμνμ§ μμ΅λλ€ @types/express-serve-static-core
μΌλ‘ μ
λ°μ΄νΈ @types/express
κ° μ΅μ λ²μ μΌλ‘ μλνλ κ²½μ°λ₯Ό?
μμ λ²μ μ΄ νμνμ§ μμ΅λλ€
@types/express-serve-static-core
μΌλ‘ μ λ°μ΄νΈ@types/express
κ° μ΅μ λ²μ μΌλ‘ μλνλ κ²½μ°λ₯Ό?
package.json
μ @types/express
λ @typescript-botμ μν΄ μλμΌλ‘ μμ±λ©λλ€.
@Pajn νμμ λ°λΌ μμ ν μ μμ΅λκΉ? κ°λ₯νλ€λ©΄ μλ‘μ΄ ν 리νμ€νΈλ₯Ό νμμμ€. thx.
νμμ λ°λΌ μμ ν μ μμ΅λκΉ?
μ λͺ¨λ₯΄κ² μ§λ§ κ·Έλ κ² ν μ μλ€λ©΄ μ¬κ°ν μ νμΈ κ² κ°μ΅λλ€. @types ν©μ ν¨μΉ μ λ°μ΄νΈλ‘ μΈν΄ λκ·λͺ¨ λ¬Έμ κ° λ°μν κ²μ μ΄λ²μ΄ μ²μμ΄ μλλλ€.
@DanielRosenwasser @sandersn @types/express
μ΄ @types/express-serve-static-core
μ μ΅μ ββλ²μ μ μ§μ ν μ μλμ§ μμλκΉ?
κ·Έκ²μ λλ₯Ό μν΄ μλν©λλ€ yarn remove express-serve-static-core
μ΄ μ€λ₯λ μ¬μ ν μ§μλλ©° ^4.17.0
μλ λ°μν©λλ€.
κ·Έκ²μ λ°κ²¬.
λ¬Έμ λ μ κΈ νμΌμ μμ΅λλ€. express-serve-static-file
μ°Έμ‘°νλ νμ μμ νκ³ yarn
λλ npm i
λ€μ μμνκΈ° yarn
νλ©΄ λ©λλ€.
λ΄ 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" "*"
λ μ΄μ λΆμΌμΉ λ° μ€λ₯κ° μμ΅λλ€.
λͺ¨λ μ΅μ€νλ μ€ κ΄λ ¨ μ ν(express-jwt ν¬ν¨)μμ yarn remove
λ₯Ό μ€ννκ³ λμ€μ λ€μ μΆκ°ν ν μλνκ² λμμ΅λλ€.
λ€μμ μννμ¬ μμ¬ λ‘ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
$ rm -f yarn.lock
$ yarn cache clean
$ yarn
μ’μ ν루 λμΈμ!
μ μκ² λ¬Έμ λ₯Ό μΌμΌν¨ κ²μ express-serve-static-coreμμ΅λλ€. μ΅μ λ²μ μ express λ° @types/expressλ‘ μ λ°μ΄νΈνκ³ express-serve-static-core && @types/express-serve-static-coreλ₯Ό μ κ±°νμ΅λλ€. κ·Έλ¦¬κ³ λλ₯Ό μν΄ μΌνμ΅λλ€.
μ²μμλ λ°λ νμ λλ¬ΈμΈ μ€ μμλλ° μλλ€μ.
Windows, μλ μ ν νλ κΈ°λ₯μ΄ μλ npm λ° VS μ½λμ κ²½μ° %localappdata%\Microsoft\TypeScript\
λ‘ μ΄λνμ¬ μ΄ λ¬Έμ λ₯Ό μμ νκ³ μ΅μ λ²μ ν΄λλ‘ μ΄λν©λλ€(μ: 3.9
λ° npm install @types/express-serve-static-core
κ½€ μ€λ«λμ typescriptλ₯Ό μ¬μ©ν΄ μ¨ λ©μΈ μ»΄ν¨ν°μ @types/express-serve-static-core
κ° μ€μΉλμ΄ μμ§ μμ μ΄μ λ₯Ό λͺ¨λ₯΄κ² μ΅λλ€. κ·Έλ¬λ λ€λ₯Έ μ μ»΄ν¨ν°μ κ²½μ° μ΄λ―Έ μ€μΉλμ΄ μμ΅λλ€.
μ
λ°μ΄νΈ:
npm update
μ€ννλ κ²λ ν¨κ³Όκ° μλ€κ³ μκ°ν©λλ€.
μ΄κ²μ 2020λ μλ μ¬μ ν λ¬Έμ μ λλ€. λ΄ λ§μ 2020λ μ μλͺ»λ μΌμ΄ λ§λ€λ λ»μ λλ€. νμ§λ§ μ΄κ²μ 2017λ λΆν° μ§μλκ³ μμ΅λλ€.
@xtianus79 TBH, koa
λ° fastify
λ 2020λ
μ ν¨μ¬ λ λμ νλ μμν¬ μ νμ
λλ€. Expressλ μ μ€νλμμ§λ§ μ§κΈμ λΆλͺ
ν λ κ±°μ λΌμ΄λΈλ¬λ¦¬μ
λλ€.
λλ₯Ό μν λλ΅μ @types/express
μΈμ @types/express-serve-static-core
λ₯Ό λͺ
μμ μΌλ‘ μ€μΉνλ κ²μ΄μμ΅λλ€.
λ΄ 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
κ·Έκ²μ κΈ°λ³Έ λ²μ μ μ
λ°μ΄νΈνκΈ° λλ¬Έμ λ΄ νλ‘μ νΈμ λμ "μ ν @ / - νν μ 곡 - μ μ - μ½μ΄ 'μ yarn.lock
.
μ΄κ²μ μ¬μ ν ββλ¬Έμ μ΄λ©° μ΅μ express / express-serve-static-core μ νμ μ€μΉνμ΅λλ€. λ¬Έμ λ μμ² μΈν°νμ΄μ€λ₯Ό νμ₯ν λμ λλ€.
interface ExampleRequest extends Request {
example: any
}
// No overload matches this call...
router.use('/api', async function (req:ExampleRequest, res, next) { ... }
κ°μ₯ μ μ©ν λκΈ
λ€μμ μννμ¬ μμ¬ λ‘ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
μ’μ ν루 λμΈμ!