node.jstypescriptexpress

Property 'session' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'


I have added this extension of an express typing

import * as express from "express";

declare global {
  namespace Express {
    interface Request {
      session: session.Session & Partial<session.SessionData>;
    }
  }
}

I have edited the typescript configuration file like this:

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "typeRoots": ["./src/types", "./node_modules/@types"],
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true,
    "outDir": "./dist",
    "rootDir": "./src"
  },
  "include": ["src/**/*.ts", "src/types/**/*.d.ts"]
}

And the structure of my project is as follows: enter image description here

Why do I get this error when starting my node server with "npx ts-node src/index.ts"

TS2339: Property 'session' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'.

26     req.session.user = data;
           ~~~~~~~

    at createTSError (C:\PROYECTOS\GITHUB_PROYECTS\Gero-Universe\gero-universe-api\node_modules\ts-node\src\index.ts:859:12)
    at reportTSError (C:\PROYECTOS\GITHUB_PROYECTS\Gero-Universe\gero-universe-api\node_modules\ts-node\src\index.ts:863:19)
    at getOutput (C:\PROYECTOS\GITHUB_PROYECTS\Gero-Universe\gero-universe-api\node_modules\ts-node\src\index.ts:1077:36)
    at Object.compile (C:\PROYECTOS\GITHUB_PROYECTS\Gero-Universe\gero-universe-api\node_modules\ts-node\src\index.ts:1433:41)
    at Module.m._compile (C:\PROYECTOS\GITHUB_PROYECTS\Gero-Universe\gero-universe-api\node_modules\ts-node\src\index.ts:1617:30)
    at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
    at Object.require.extensions.<computed> [as .ts] (C:\PROYECTOS\GITHUB_PROYECTS\Gero-Universe\gero-universe-api\node_modules\ts-node\src\index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1288:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1104:12)
    at Module.require (node:internal/modules/cjs/loader:1311:19) {
  diagnosticCodes: [ 2339 ]
}

I have tried everything possible to try to get typescript to detect the typing I have added but there is no way.


Solution

  • It works when i start my server with: npx ts-node --files src/index.ts or npx ts-node -T src/index.ts