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
Ответы
Ответ 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, находясь в каталоге папки проекта:
-
npm init
-
npm install -g webpack
-
npm install --save react react-dom @types/react @types/react-dom
-
npm install --save-dev typescript awesome-typescript-loader source-map-loader
-
npm install [email protected]^6.0.0
-
npm я react-html-id
- импортировать пакет (в модулях узла) в файл 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
исправил это для меня