Поток: ошибка бросков не может разрешить модуль "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 ответа:
Как это исправить
У вас есть два варианта:
- заглушите зависимость вручную
- введите
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
Я сделал следующее:
- установите
flow-typed
глобально. Пример:$ npm install -g flow-typed
- затем в корневой папке проекта выполните команду
$ 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
Вы должны увидеть это, если установка прошла успешно.- затем попробуйте запустить flow еще раз
$ npm run flow
в вашем проекте. Ошибки сreact-redux
больше не будет.