次のエラーが表示されます。
node_modules/@types/react-redux/index.d.ts(8,24): error TS2307: Cannot find module 'redux'.
react-redux
と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"
},
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"
の後にセミコロンを追加しても効果がないことに注意してください。
反応ネイティブプロジェクトでも同じ問題が発生しました。この修正は私のために働いた:
Package.jsonファイルにリンクされている型定義を含めるには、コンパイラオプションに「moduleResolution」:「node」を追加する必要があります。
ドキュメントはこちら https://www.typescriptlang.org/docs/handbook/module-resolution.html
@types/[email protected]
に戻したところ、問題は解決しました。このバージョンには、redux用のindex.d.ts
ファイルが含まれています。通常のindex.d.ts
ディレクトリではなくnode_modules/redux
の下でのみnode_module/@types
ファイルを検索していないTypeScriptコンパイラに問題がある可能性があります。
次の反応バージョン"^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/redux
asは不要です。Reduxパッケージは独自の型定義を提供するので、@types/redux
をインストールする必要はありません。
すでにmoduleResolution: 'node'
および@types/redux
が削除されました。しかし、削除したときnode_modules
と再インストールすると、問題はなくなりました。 :すごい。