Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Typescript cannot find redux

I am getting the following error:

node_modules/@types/react-redux/index.d.ts(8,24): error TS2307: Cannot find module 'redux'.

despite having installed both react-redux and redux (package.json):

"dependencies": {
    "react": "15.4.2",
    "react-native": "0.42.3",
    "react-redux": "^5.0.3",
    "redux": "^3.6.0"
},
"devDependencies": {
    "@types/react": "^15.0.18",
    "@types/react-native": "^0.42.9",
    "@types/react-redux": "^4.4.38",
    "@types/redux": "^3.6.0",
    "babel-jest": "19.0.0",
    "babel-preset-react-native": "1.9.1",
    "jest": "19.0.2",
    "react-test-renderer": "15.4.2",
    "tslint": "^4.5.1",
    "typescript": "^2.2.1"
},

The README.md file in @types/redux says:

This is a stub types definition for Redux (https://github.com/reactjs/redux).
Redux provides its own type definitions, so you don't need @types/redux installed!

but uninstalling the @types/redux package makes no difference.

Any ideas?

UPDATE

I thought that by adding an index.d.ts to the @types/redux directory (containing only export * from ../../redux/index), it would solve the problem, but no joy.

Here is my tsconfig.json:

{
    "compilerOptions": {
        "target": "es2015",
        "module": "es2015",
        "jsx": "react",
        "outDir": "build",
        "rootDir": "src",
        "allowSyntheticDefaultImports": true,
        "noImplicitAny": true,
        "experimentalDecorators": true,
        "preserveConstEnums": true,
        "allowJs": true,
        "sourceMap": true
    },
    "filesGlob": [
        "src/**/*.ts",
        "src/**/*.tsx"
    ],
    "exclude": [
        "__tests__",
        "index.android.js",
        "index.ios.js",
        "build",
        "node_modules"
    ],
    "compileOnSave": false
}

and I definitely deleted the @types/redux directory from node_modules. I am (obviously) running TypeScript 2.2.1.

UPDATE 2

Code using redux:

import { combineReducers } from "redux"

export default combineReducers({})

Note that adding a semicolon after "redux" does not help.

like image 224
Ralph Avatar asked Mar 24 '17 15:03

Ralph


People also ask

Does Redux work with TypeScript?

As of React-Redux v8, React-Redux is fully written in TypeScript, and the types are included in the published package. The types also export some helpers to make it easier to write typesafe interfaces between your Redux store and your React components.

Can not find module react-Redux?

To solve the error "Module not found: Error: Can't resolve 'redux'", make sure to install the redux package by opening your terminal in your project's root directory and running the command npm install redux react-redux and restart your development server.


3 Answers

I experienced the same problem on a react-native project. This fix worked for me:

You have to add "moduleResolution": "node" to the compiler options in order to include type definitions linked in package.json files.

Documentation here https://www.typescriptlang.org/docs/handbook/module-resolution.html

like image 178
Andrew Sinner Avatar answered Sep 20 '22 05:09

Andrew Sinner


I reverted to @types/[email protected] and that resolved the problem. This version includes the index.d.ts file for redux. There might be a problem with the TypeScript compiler not looking for the index.d.ts file in the normal node_modules/redux directory, but only under node_module/@types.

like image 20
Ralph Avatar answered Sep 24 '22 05:09

Ralph


If you encounter the same issue with the following react version "^16.8.6" verify if the npm redux package

Package.json

"dependencies": {
    "@types/jest": "24.0.13",
    "@types/node": "12.0.3",
    "@types/react": "16.8.19",
    "@types/react-dom": "16.8.4",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-redux": "^7.0.3",
    "react-scripts": "3.0.1",
    "redux": "^4.0.1",
    "typesafe-actions": "^4.4.0",
    "typescript": "3.5.1"
  },

if not installed just do npm install redux no need for npm i @types/reduxas Redux package provides its own type definitions, so you don't need @types/redux installed!

like image 39
BRAHIM Kamel Avatar answered Sep 22 '22 05:09

BRAHIM Kamel