Поток: выдает ошибку Не удается разрешить модуль "реакция-редукция" даже если он установлен

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

[email protected]:~/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) Команда ниже проверяет, существует ли каталог, и

[email protected]:~/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

enter image description here

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

Ответы

Ответ 1

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

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

  1. заглушить зависимость вручную
  2. приведите в flow-typed чтобы найти файл типа зависимости/заглушить его для вас

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

Опция 1

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

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

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

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

Вариант 2

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

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

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

Ответ 2

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

enter image description here

Я разрешил его, используя flow-typed

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

  1. Установите тип flow-typed глобальном масштабе. Пример: $ npm install -g flow-typed
  2. Затем в корневой папке проекта запустите $ flow-typed install [email protected] enter image description here. • Searching for 1 libdefs... • flow-typed cache not found, fetching from GitHub... • Installing 1 libDefs... • react-redux_v5.xxjs └>./flow-typed/npm/react-redux_v5.xxjs react-redux Вы должны увидеть это, если установка прошла успешно.
  3. Затем попробуйте снова $ npm run flow потока $ npm run flow в вашем проекте. Ошибка с react-redux больше не будет.

Ответ 3

Альтернативное решение (в некоторых случаях)

Проверьте .flowconfig и удалите <PROJECT_ROOT>/node_modules/.* под полем [ignore] (если оно там есть).


Спасибо @meloseven, который решил это здесь.