web-dev-qa-db-ja.com

タイプスクリプトがreduxを見つけることができません

次のエラーが表示されます。

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

react-reduxreduxpackage.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"
},

README.md@types/reduxファイルには次のように記載されています。

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!

ただし、@types/reduxパッケージをアンインストールしても違いはありません。

何か案は?

[〜#〜] update [〜#〜]

index.d.ts@types/reduxディレクトリ(export * from ../../redux/indexのみを含む)に追加することで問題を解決できると思いましたが、喜びはありません。

これが私の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
}

@types/reduxからnode_modulesディレクトリを確実に削除しました。私は(明らかに)TypeScript 2.2.1を実行しています。

更新2

reduxを使用するコード:

import { combineReducers } from "redux"

export default combineReducers({})

"redux"の後にセミコロンを追加しても効果がないことに注意してください。

21
Ralph

反応ネイティブプロジェクトでも同じ問題が発生しました。この修正は私のために働いた:

Package.jsonファイルにリンクされている型定義を含めるには、コンパイラオプションに「moduleResolution」:「node」を追加する必要があります。

ドキュメントはこちら https://www.typescriptlang.org/docs/handbook/module-resolution.html

62
Andrew Sinner

@types/[email protected]に戻したところ、問題は解決しました。このバージョンには、redux用のindex.d.tsファイルが含まれています。通常のindex.d.tsディレクトリではなくnode_modules/reduxの下でのみnode_module/@typesファイルを検索していないTypeScriptコンパイラに問題がある可能性があります。

6
Ralph

次の反応バージョン"^16.8.6"で同じ問題が発生した場合は、npm reduxパッケージが

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"
  },

インストールされていない場合は、npm install reduxを実行しないでください。npm i @types/reduxasは不要です。Reduxパッケージは独自の型定義を提供するので、@types/reduxをインストールする必要はありません。

0
BRAHIM Kamel

すでにmoduleResolution: 'node'および@types/reduxが削除されました。しかし、削除したときnode_modulesと再インストールすると、問題はなくなりました。 :すごい。

0
Jeremy John