Подтвердить что ты не робот

Typescript response - Не удалось найти файл декларации для модуля '' react-materialize '. 'path/to/module-name.js' неявно имеет любой тип

Я пытаюсь импортировать компоненты из реакции-материализуются как -

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.

index.js для реакции-материализации выглядит это нравится. Но как решить это для импорта модуля в мои собственные файлы.

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

4b9b3361

Ответ 1

Для тех, кто хотел узнать, как я это преодолел. Я сделал взломанный материал.

Внутри моего проекта я создал папку под названием @Types и добавил ее в tsconfig.json для поиска всех необходимых типов. Итак, это выглядит примерно так:

  "typeRoots": [
            "../node_modules/@types",
            "../@types"
        ]

И внутри я создал файл с именем alltypes.d.ts. Найти неизвестные типы. поэтому для меня это были неизвестные типы, и я добавил его там.

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

Итак, теперь typescript не жаловался на типы, которые больше не найдены.:) выиграть сейчас ситуацию:)

Ответ 2

У меня была аналогичная ошибка, но для меня это было react-router. Решил его, установив для него типы.

npm install --save @types/react-router

Ошибка:

(6,30): error TS7016: Could not find a declaration file for module 'react-router'. '\node_modules\react-router\index.js' implicitly has an 'any' type.

Если вы хотите отключить его на сайте, вы можете редактировать tsconfig.json и установить noImplicitAny на false.

Ответ 3

У меня была такая же проблема с типами реаги-редукс. Самое простое решение было добавлено в 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"]
}

Ответ 4

Все, что вам нужно сделать, это запустить приведенный ниже скрипт. Затем удалите/переустановите модуль, который вы хотите использовать.

npm install --save @types/react-redux

Ответ 5

Кроме того, эта ошибка исправляется, если пакет, который вы пытаетесь использовать, имеет собственный файл типа и, который он перечисляет в атрибуте package.json typings

Так же:

{
  "name": "some-package",
  "version": "X.Y.Z",
  "description": "Yada yada yada",
  "main": "./index.js",

  "typings": "./index.d.ts",

  "repository": "https://github.com/yadayada.git",
  "author": "John Doe",
  "license": "MIT",
  "private": true
}

Ответ 6

Более хакерский способ - добавить, например, в boot.tsx строку

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

с

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

in declare_modules.d.ts

Это работает, но другие решения лучше IMO.

Ответ 7

Я выполнил следующие команды из командной строки nodejs, находясь в каталоге папки проекта:

  1. npm init
  2. npm install -g webpack
  3. npm install --save react react-dom @types/react @types/react-dom
  4. npm install --save-dev typescript awesome-typescript-loader source-map-loader
  5. npm install [email protected]^6.0.0
  6. npm я react-html-id
  7. импортировать пакет (в модулях узла) в файл App.js, добавив код: import UniqueId from 'react-html-id';

Я сделал выше (хотя у меня уже был установлен npm), и это сработало!

Ответ 8

работает просто отлично

npm install @types/react-materialize

Ответ 9

В моем случае проблема заключалась в том, что типы не добавлялись в файл package.json в devDependencies, чтобы исправить это. Я запустил npm install --save-dev @types/react-redux обратите внимание на --save-dev

Ответ 10

Если для используемого вами модуля нет @types/<package>, вы можете легко решить эту проблему, добавив //@ts-ignore ie

// @ts-ignore
import { render } from 'react-snapshot';

В качестве альтернативы вы можете создать отсутствующие @types/<package> следующие:

публикация файлов декларации

Определенно, как я могу внести свой вклад

Ответ 11

В tsconfig.json установите "noImplicitAny": false исправил это для меня