«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я исправил проблему с настройкой TypeScript: пользователь свойства не существует в запросе типа.

Как я исправил проблему с настройкой TypeScript: пользователь свойства не существует в запросе типа.

Опубликовано 2 ноября 2024 г.
Просматривать:816

How I Fixed My TypeScript Setup Issue: Property user does not exist on type Request.

Проблема
Я работал над проектом Node.js с TypeScript и Express.js. В какой-то момент мне нужно было прикрепить объект пользователя к объекту экспресс-запроса, но я столкнулся с этой ошибкой TypeScript:

Свойство «пользователь» не существует для типа «Запрос».

Я быстро понял, что это происходит потому, что объект запроса Express по умолчанию не включает свойство пользователя, и TypeScript это не понравилось.

Мое первоначальное исправление
Чтобы исправить это, я расширил интерфейс запроса, добавив свойство пользователя. Вот как я это сделал:

  1. Я создал новый файл с именем express.d.ts в папке типов моего проекта:
// src/types/express.d.ts
import { User } from '@prisma/client'; // Assuming User is a Prisma model

declare global {
    namespace Express {
        interface Request {
            user?: User; // Add user to the Request interface
        }
    }
}
  1. Я обновил свой tsconfig.json, чтобы гарантировать, что TypeScript поддерживает этот новый тип:
{
  "compilerOptions": {
    //extra options here
    "typeRoots": ["./node_modules/@types", "./src/types"] // Add the types folder
  }
}

На этом этапе ошибка исчезла из моего редактора кода, поэтому я подумал, что устранил проблему. Но когда я попытался запустить проект, я обнаружил в терминале еще одну ошибку:

ошибка TS2339: свойство «пользователь» не существует для типа «запрос».

Застрял на несколько дней
Я потратил 3-4 дня на устранение этой неполадки, перепробовав все, что смог найти в Интернете. Я полностью застрял и не мог понять, почему это не работает.

Решение
Наконец, я обнаружил корневую проблему и исправил ее, выполнив следующие действия:

  1. Установить TypeScript глобально: я понял, что у меня не установлен глобальный компилятор TypeScript (tsc), поэтому я выполнил эту команду:

npm install -g машинописный текст

  1. Запустите компилятор TypeScript в режиме просмотра: я использовал флаг --watch для автоматической перекомпиляции кода TypeScript во время работы:
    tsc --смотреть

  2. Перезапустить редактор кода: я перезапустил редактор (в моем случае VS Code), чтобы убедиться, что все загружено правильно.

  3. Запуск проекта: после перезапуска я снова запустил проект — и он сработал!

Заключение
То, что я думал, будет небольшой проблемой, превратилось в дни разочарования, но, наконец, мне удалось заставить это работать! Если вы столкнулись с аналогичными проблемами, когда TypeScript не распознает новые свойства объекта Request Express, не забудьте:

Правильно расширьте интерфейс запроса.
Убедитесь, что компилятор TypeScript (tsc) установлен и работает правильно.
Надеюсь, это поможет всем, кто застрял, как я!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/nikhilagr15/how-i-fixed-my-typescript-setup-issue-property-user-does-not-exist-on-type-request-46fj?1Если есть есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3