Поток: выдает ошибку Не удается разрешить модуль "реакция-редукция" даже если он установлен
Даже модуль установлен и существует, 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
Это очень вероятная ошибка с Flow, я также представил вопрос.
Ответы
Ответ 1
Как это исправить
У вас есть два варианта:
- заглушить зависимость вручную
- приведите в
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
У меня была такая же проблема, как и вы.
Я разрешил его, используя flow-typed
Я сделал следующее:
- Установите тип
flow-typed
глобальном масштабе. Пример: $ npm install -g flow-typed
- Затем в корневой папке проекта запустите
$ flow-typed install [email protected]
. • 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
Вы должны увидеть это, если установка прошла успешно. - Затем попробуйте снова
$ npm run flow
потока $ npm run flow
в вашем проекте. Ошибка с react-redux
больше не будет.
Ответ 3
Альтернативное решение (в некоторых случаях)
Проверьте .flowconfig
и удалите <PROJECT_ROOT>/node_modules/.*
под полем [ignore]
(если оно там есть).
Спасибо @meloseven, который решил это здесь.