【问题标题】:Typescript cannot find redux打字稿找不到redux
【发布时间】:2017-03-24 15:30:28
【问题描述】:

我收到以下错误:

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

尽管安装了react-reduxredux (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"
},

@types/redux 中的 README.md 文件说:

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 包没有任何区别。

有什么想法吗?

更新

我认为通过在@types/redux 目录中添加index.d.ts(仅包含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
}

我确实从node_modules 中删除了@types/redux 目录。我(显然)正在运行 TypeScript 2.2.1。

更新 2

使用redux的代码:

import { combineReducers } from "redux"

export default combineReducers({})

请注意,在 "redux" 之后添加分号没有帮助。

【问题讨论】:

  • 是的,它应该在没有@types/redux 的情况下工作。实际上,当我安装 @types/redux 时,我认为我遇到了问题......你能提供一段代码来导入 redux 吗?
  • 只是为了确定,把你的 tsconfig.json 也放在这里。
  • import { createStore, Store, Reducer } from 'redux' 这在 typescript 2.3.0-dev.20170320 中工作得很好
  • @Ralph 确保 @types/redux 确实从您的 node_modules 目录中删除,而不仅仅是从您的 package.json 中删除
  • @Erik:恢复到@types/redux@3.6.31 解决了这个问题。我怀疑 TypeScript 编译器有问题。

标签: typescript redux react-redux


【解决方案1】:

我在 react-native 项目中遇到了同样的问题。这个修复对我有用:

您必须在编译器选项中添加 "moduleResolution": "node" 以包含链接在 package.json 文件中的类型定义。

这里有文档https://www.typescriptlang.org/docs/handbook/module-resolution.html

【讨论】:

  • 当他们说“现在,这种策略主要是为了向后兼容”时,我猜你会认为是可以原谅的。在他们的官方文档中,classic 不会是默认值...这只是解决了我很多痛苦,谢谢
  • 这也解决了我的问题。 FTFM “有两种可能的模块解析策略:Node 和 Classic (...) 如果未指定,则默认为 Classic for --module AMD | System | ES2015 或 Node 否则。” typescriptlang.org/docs/handbook/module-resolution.html
【解决方案2】:

我恢复到@types/redux@3.6.31 并解决了问题。此版本包括用于 redux 的 index.d.ts 文件。 TypeScript 编译器可能存在问题,它没有在普通的 node_modules/redux 目录中查找 index.d.ts 文件,而是仅在 node_module/@types 下查找。

【讨论】:

  • forward 2022 这个版本的问题仍然存在,但恢复到'@types/redux@3.6.31?'没修好
【解决方案3】:

如果你在下面的react版本"^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,因为Redux包提供了自己的类型定义,所以你不需要安装@types/redux

【讨论】:

    【解决方案4】:

    我已经有moduleResolution: 'node'@types/redux 已被删除。但是当我删除node_modules 并重新安装时,问题就消失了。 :耸肩。

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 1970-01-01
      • 2021-01-07
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多