Поток: ошибка бросков не может разрешить модуль "react-redux", даже если он установлен


Даже если модуль установлен и он существует, поток не может разрешить его и выдает ошибку. Увидеть ниже: 1) внутри bash я побежал flow и он выдает ошибку, что модуль не найден

user@pc:~/code/project$ flow
Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ src/functionalities/Growth/index.js:3:25

Cannot resolve module react-redux.

     1│ // @flow
     2│ import React from "react"
     3│ import { connect } from "react-redux"
     4│
     5│ type Props = {
     6│   children: Function



Found 1 error

2) ниже команда проверяет, существует ли каталог, и она делает

user@pc:~/code/project$ ls node_modules | grep react-redux
react-redux
Я попытался удалить и переустановить как каталог node_modules, так и файл yarn.lock.

Версии должны совпадать:

flow version
Flow, a static type checker for JavaScript, version 0.77.0

.flowconfig:

[version]
0.77.0

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

Это очень вероятно ошибка с потоком, Я тоже подал вопрос.

2 4

2 ответа:

Как это исправить

У вас есть два варианта:

  1. заглушите зависимость вручную
  2. введите flow-typed, чтобы найти тип зависимости file/stub it for you

Я использую вариант 2, но приятно знать, что происходит под ним

Вариант 1

В .flowconfig Добавьте каталог под [libs],

...
[libs]
/type-def-libs
...

Теперь создайте этот каталог в корне проекта и файл /type-def-libs/react-redux, который содержит,

declare module 'react-redux' {
  declare module.exports: any;
}

Вариант 2

  • установить flow-typed, Если используется пряжа yarn add -D flow-typed
    • я предпочитаю устанавливать каждый локально в проект, когда это возможно
  • беги yarn flow-typed install
    • это установит любые файлы определения типов для модулей, которые он найдет, и заглушит любые модули, которые он не найдет, что аналогично тому, что мы сделали в варианте 1

Почему происходит эта ошибка

Flow ищет определение типа для импортируемого модуля. Так что пока модуль делает существует в /node_modules, что модуль не имеет файла определения типа, проверенного в его коде.

У меня была та же проблема, что и у вас.

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

Я решил ее с помощью flow-typed

Я сделал следующее:

  1. установите flow-typed глобально. Пример: $ npm install -g flow-typed
  2. затем в корневой папке проекта выполните команду $ flow-typed install react-redux@5.0.x Введите описание изображения здесь • Searching for 1 libdefs... • flow-typed cache not found, fetching from GitHub... • Installing 1 libDefs... • react-redux_v5.x.x.js └> ./flow-typed/npm/react-redux_v5.x.x.js react-redux Вы должны увидеть это, если установка прошла успешно.
  3. затем попробуйте запустить flow еще раз $ npm run flow в вашем проекте. Ошибки с react-redux больше не будет.