Почему расширенный Express Запрос внезапно сломался? - PullRequest
1 голос
/ 17 апреля 2020

Я использую Node v12 и Express v4.16.4 и Typescript версии 3.8.3 и использую VSCode.

Этот фрагмент кода не изменялся почти 8 месяцев, и мы используем его на каждом маршрутизаторе .

export interface ICustomRequest extends Request {
    district: string;
}

И все эти месяцы работали нормально. Любой другой человек в моей команде использует тот же код, что и я, и до сих пор не имеет проблем с ним. Внезапно этим утром - ни один мой код не скомпилируется из-за ошибки, связанной с req.query во всех маршрутизаторах.

Такие вещи, как это:

public async get(req: ICustomRequest, res: Response, next: NextFunction) {
    try {
        const property = req.query.property;

        let results: await doTheThing(property);
        res.json(results);

    } catch (error) {
        next(error);
    }
}

Где req .query.property выдает ошибку, такую ​​как: «ошибка TS2345: Аргумент типа« строка | Запрос »(строка | Запрос) []» не может быть назначен параметру типа «строка». Тип «Запрос» не может быть назначен типу 'string'. "

Я не понимаю, как внезапно эта проблема возникает во всех файлах моего проекта, в то время как у других трех разработчиков такой проблемы нет, и мы все находимся на одинаковые версии всего. Если я добавлю .toString (), это будет работать, но я не смогу оправдать изменение 202 экземпляров только для себя, когда у других нет проблем. Есть какие-нибудь идеи о моей среде, которые могли бы вызвать проблемы с печатанием?

Вещи, которые я пробовал:

Полное повторное клонирование моих проектов из апстрима. Переустановка узла. Переустановка машинописи. npm кеш чистый. удаление узловых модулей и переустановка. снятие пакета-блокировки. json.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Начало работы, установка версий исправлений для express, @ type / express и @ type / express -serve-stati c -core:

  "dependencies": {
    "express": "4.16.4",
  },
  "devDependencies": {
    "@types/express": "4.16.1",
    "@types/express-serve-static-core": "4.16.4",
  }

Передайте shrinkwrap. json или package-lock. json в свой репозиторий, чтобы избежать подобных проблем в будущем.

2 голосов
/ 17 апреля 2020

Это типичная проблема при установке пакетов "@types", которые не имеют строго определенных зависимостей. NPM установил самую новую версию @types/express Я думаю.

Попробуйте понизиться до 4.16.11 или выше (вы можете попробовать их по одному).

"devDependencies": {"@types/express": "4.16.11"}

Урок для будущее. Всегда имейте надлежащий пакет-блокировку. json зафиксировано в хранилище. Это должно предотвратить подобные проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...