我试图从react-materialize导入组件

import {Navbar, NavItem} from 'react-materialize';

但是当webpack编译我的.tsx时,它会为上面的-抛出一个错误

ERROR in ./src/common/navbar.tsx
(3,31): error TS7016: Could not find a declaration file for module 'react-materi
alize'. 'D:\Private\Works\Typescript\QuickReact\node_modules\react-materialize\l
ib\index.js' implicitly has an 'any' type.

有什么解决办法吗?我不确定如何解析此导入语句以使用ts-loader和webpack。

react-materialize的index.js是这样的。但是我如何解决这个模块导入在我自己的文件?

https://github.com/react-materialize/react-materialize/blob/master/src/index.js


当前回答

尝试添加到tsconfig。"noImplicitAny": false 为我工作

其他回答

一个更俗气的方法是加上eg。,在引导。TSX线

import './path/declare_modules.d.ts';

with

declare module 'react-materialize';
declare module 'react-router';
declare module 'flux';

在declare_modules.d.ts

这是可行的,但在我看来,其他解决方案更好。

您所需要做的就是运行下面的脚本。然后,移除/重新安装要使用的模块。

npm install --save @types/react-redux

无法找到模块“react/jsx-runtime”的声明文件

如果有人有这个错误,那么你会惊讶地发现,当使用create-react-app创建react应用程序时,它只在package.json中显示@types/react。但是如果你检查node_modules/@types文件夹,你将找不到任何react文件夹。

解决方案是完全清除node_modules文件夹并重新安装- npm install,或者可能可以使用单个模块安装- npm install @types/react。

我在使用react-redux类型时也遇到了同样的问题。最简单的解决方案 被添加到tsconfig.json:

"noImplicitAny": false

例子:

{
  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "isolatedModules": true,
    "jsx": "react",
    "lib": ["es6"],
    "moduleResolution": "node",
    "noEmit": true,
    "strict": true,
    "target": "esnext",
    "noImplicitAny": false,
  },
  "exclude": ["node_modules", "babel.config.js", "metro.config.js", "jest.config.js"]
}

尝试添加到tsconfig。"noImplicitAny": false 为我工作