Определения потокового типа игнорируются в пользу модуля npm? - PullRequest
0 голосов
/ 04 августа 2020

Учитывайте следующие Javascript и код потока:

import type { $Request, $Response } from 'express';

function middleware(req: $Request, res: $Response) {}

middleware({}, {});

(полный код на https://github.com/bradvogel/flow-playground)

Когда express isn 't установлен как модуль npm, Flow правильно отмечает ошибку кода:

enter image description here

However, when I npm install express, Flow can no longer resolve the types (from flow-typed):

введите описание изображения здесь

Может ли кто-нибудь объяснить, кто из Flow пытается импортировать типы из модуля Express, а не из потокового типа? Как мне это преодолеть?

1 Ответ

2 голосов
/ 04 августа 2020

Flow на самом деле не знает о пакетах узлов как единице, поэтому, если вы не хотите, чтобы Flow пытался анализировать вещи в node_modules, вам понадобится

[ignore]
<PROJECT_ROOT>/node_modules/.*

в вашем .flowconfig. Если вы действительно хотите разрешить подмножество node_modules, [ignore] объяснят, как это сделать.

Я не знаю, как Flow устанавливает приоритеты для явно объявленных определений типов из flow-typed по сравнению с реальными файлами, но, предположительно, учитывая то, что мы здесь видим, Flow должен попытаться загрузить определения типов из фактического импортированного файла, если файл не игнорируется.

...