typescript error: express.session is not defined

Recently delving into typescript/javascript, I am exploring the creation of backend rest APIs with session. Below is my app.ts file:

import express from "express";
import { applyMiddleware, applyRoutes } from "./utils";
import routes from "./services";

const app = express();

var ses= {
    secret: "secret_session",
    resave: true,
    saveUninitialized: true,
    cookie: { maxAge: 3600000,secure: false, httpOnly: true
}
if (app.get('env') === 'production') {
app.set('trust proxy', 1)
ses.cookie.secure = true
}

app.use(session(ses));

applyRoutes(routes, app);

The server has been initiated and middlewares for error handling have been applied. Moving on to setting up sessions in the routes.ts code:

import { Request, Response } from "express";
import { getAll, getByKeyword, addNewProduct } from "./productControllers";
{
path: "/api/v1/getAllProducts",
method: "get",
handler: [
(req: Request, res: Response) => {
getAll()
.then((row: any) => {
var sess = req.session;
sess.views = 1;
res.status(200).json({ data: row });
})
.catch(err => {
res.json({
message: err
});
});
}
]
}

An issue arises at sess.views = 1;.

I've attempted various solutions before seeking help, none offering a resolution to my problem.

EDIT: I've created an additional index.ts

import searchRoutes from "./products/routes";

export default [...searchRoutes];

There's also another utility class:

export const applyRoutes = (routes: Route[], router: Router) => {
for (const route of routes) {
const { method, path, handler } = route;
(router as any)[method](path, handler);
}
}

Answer №1

If you're working with an interface called Request in express.js, you may encounter a compile error due to the lack of type definitions for session. To resolve this issue, you'll need to define the session type within the Request interface.

To do this, you can create a session.d.ts file in your project and specify the required types and interfaces like so:

declare global {
  namespace Express {
    interface Request {
      session?: Session;
      sessionID?: string;
    }
  }
}

interface Session{
  mySessionVarible:string
}

Alternatively, you can utilize the DefinitelyTyped project, which offers a wide range of type definitions to help address your compile problem.

npm install --save-dev @types/express-session

Remember to update your import statement for Request accordingly:

import { Request, Response } from "@types/express-session";

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Exploring the concept of SOCKET.IO with rx.js in an Angular application

I am currently working on an Angular (2) application and I need to ensure that the view is updated whenever there is a change in the data from the back end. getData() { return this.http.get("some url") .map(result => result.json()); } ...

Sending data to a Sheetlabs API using Axios

I'm currently collaborating with a service called Sheetlabs to transform a Google Sheet into a full-fledged API. Unfortunately, I'm struggling to find useful resources online apart from the Sheetlabs documentation, as it appears to be a relativel ...

Eliminate jQuery's delayed blinking effect with the use of an event

Utilizing the mouseenter and mouseleave events, I have implemented a functionality to add a button (not actually a button) to an <li>. However, there seems to be a problem with my code. The button appears and disappears on mouseleave and mouseenter, ...

"Encountering difficulties while trying to modify the QuillNoSSRWrapper value within a Reactjs

Currently, I am working on a project involving ReactJS and I have opted to use the Next.js framework. As of now, I am focused on implementing the "update module" (blog update) functionality with the editor component called QuillNoSSRWrapper. The issue I ...

Building a robust chatbot system with the power of websockets in Angular 4 and the

My goal is to establish real-time chat communication between a Django backend and an Angular 4 frontend by using a PostgreSQL database. Let's say I want to create a chatbot similar to A.L.I.C.E. It seems like implementing websockets would be the best ...

Simulated exported class using Typescript and Jest

Greetings! I have written the code below to retrieve blobs from Azure Blob Storage. import { BlobServiceClient, ContainerClient, ServiceFindBlobsByTagsSegmentResponse } from '@azure/storage-blob'; import { GetBlobPageInput, GetBlobPageOutput, Put ...

Displaying and concealing repeated components in ReactJs

I iterate over a list of items: this.props.connections.map((connection) => ( For each item in this list, a card is generated. Within this card, I have implemented a toggle button: <div id="bookmarkIcon"> {this.state.available ? ( <Ta ...

Warning: Potential unhandled promise rejection in React class component

I'm trying to implement a promise inside a class so that depending on whether it resolves or rejects, another method of my component is executed. Below is the code I have: var promise = new Promise((resolve, reject) => { let name = 'DaveA&ap ...

Combining Interfaces in Typescript: Utilizing Union Types with a Base and Extended Interface

I'm facing an issue with the following code snippet interface BaseA { a: number; } interface SpecialA extends BaseA { b: number; } type A = BaseA | SpecialA const a = { a: 5, b: 5 } as A console.log(a.b) Even though I thought the code was ...

In order to locate a matching element within an array in a JSON file and update it, you can use Node

Good day, I have a script that updates the value in a JSON file const fsp = require('fs').promises; async function modifyNumberInFile() { try { let data = await fsp.readFile('example.json'); let obj = JSON.parse(dat ...

Pass along property to subsequent middlewares in Express

Within my express app, I have implemented auth middleware that identifies the current user based on the session ID. I am seeking a way to "persist" the user object and make it accessible to subsequent middlewares. I attempted attaching the user object to t ...

The RegisterHelper feature seems to be malfunctioning in handlebars

Just starting out with NodeJs and Handlebars. I am passing an array of values to the view and have created a helper function to determine whether or not to include a "View all" action button based on the length of the array. If the length is greater than 1 ...

The drag and drop feature seems to be malfunctioning in the Selenium Webdriver when using the Node.js (JavaScript) test automation framework

I am currently utilizing the selenium webdriver along with a customized automation framework built in nodejs. My goal is to implement drag and drop functionality for a slider using the actions class, but unfortunately I am encountering issues. Below you ca ...

Using JavaScript's setInterval function in conjunction with Math.random to obtain a random value

Just generated some random numbers. Wondering how to dynamically update the values of these numbers every 5 seconds with fluctuations less than +/- 5% compared to the current value. Need help using the setInterval function. Here is my code for Random Pric ...

Setting the value for a textbox using Jquery's .val() function works, while .attr() does not have the

//unable to get it working $("#TextBoxID1").attr("value","HI Value Change") //works perfectly fine $("#TextBoxID2").val("HI Value Change") <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> <input type= ...

Sending various array data via AngularJS

Welcome to the HTML page view where users can input data and send it to an API. https://i.sstatic.net/uJTYc.png Within the form, three parameters need to be passed in a single array: day, fromtime, and to-time. How can these three parameters be passed in ...

When working with the async setup() method in Vue3 with router-view, I encountered a perplexing issue

After implementing async setup () in Vue 3, I noticed that my component was no longer visible. Searching for a solution led me to this post: why i got blank when use async setup() in Vue3. While the suggested fix resolved the initial issue, I encountered a ...

Attempting to run driver.execute_script(gooogletag but no response was received

I have been attempting to receive responses in the console from the browser when running googletag parameters with Selenium, but unfortunately I have not been successful. Even after trying .execute_async_script('googletag.pubads()') and putting ...

AJAX seems to be struggling to recognize JSON data as JSON format

I am facing an issue with my AJAX call where the data received from the server is not being treated as JSON, despite setting the datatype to json: function RetrieveMateriasFromServer(callback){ var status_aux; //HTTP request for data from the given UR ...

Following a series of Observables in Angular 2+ in a sequential order

Apologies if this question has been answered elsewhere, I attempted to search for it but I'm not exactly sure what I should be looking for. Imagine I have this complex object: userRequest: { id: number, subject: string, ... orderIds: ...