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

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

Но когда веб-пакет компилирует мой .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 response-materialize выглядит примерно так. Но как мне решить эту проблему для импорта модуля в моих собственных файлах?

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

Joy

Ответов: 24

Ответы (24)

Для тех, кто хотел знать, как я это преодолел. Я сделал что-то вроде хакерства.

Внутри своего проекта я создал папку с именем @ types и добавил ее в tsconfig.json, чтобы найти в ней все необходимые типы. Это выглядит примерно так -

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

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

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

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

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

npm install @types/react-materialize

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

Вот так:

{
  "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
}

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

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

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

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

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

с

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

в declare_modules.d.ts

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

У меня возникла эта проблема, когда я добавил response-router-dom в новое приложение CRA с помощью машинописного текста. После того, как я добавил @ types / response-router, проблема была исправлена.

попробуйте добавить в файл tsconfig.json: "noImplicitAny": false работал у меня

Просто установите необходимые типы для реагирования, и это должно устранить ошибку.

при использовании пряжи:

yarn add @types/react @types/react-dom @types/react-router-dom -D

, если вы используете npm:

npm install @types/react @types/react-dom @types/react-router-dom --save-dev

В моем случае у меня была проблема с реакцией, поэтому я начал делать:

npm install @ types / react

, а затем на

npm install @ types / response-dom

Это сработало для меня

У меня была такая же проблема, но не обязательно относящаяся к машинописному тексту, поэтому я немного боролся с этими различными вариантами. Я делаю очень простое приложение create-response-app, используя специальный модуль response-portal-tooltip, получаю аналогичную ошибку:

Не удалось найти файл декларации для модуля response-portal-tooltip. '/node_modules/react-portal-tooltip/lib/index.js' неявно имеет тип 'любой'. Попробуйте npm install @ types / response-portal-tooltip, если он существует, или добавьте новый файл объявления (.d.ts), содержащий declare module 'react-portal-tooltip';ts (7016)

Сначала я пробовал много шагов - добавлял различные файлы .d.ts, различные установки npm.

Но то, что в конечном итоге сработало для меня, было touch src / declare_modules.d.ts затем в src / declare_modules.d.ts:

объявить модуль «react-portal-tooltip»;

и в src / App.js:

импортировать всплывающую подсказку из 'response-portal-tooltip';
// импортируем './declare_modules.d.ts'
• 100001

Сначала я подумал, что import './declare_modules.d.ts' был необходим. Хотя сейчас вроде бы нет! Но я включаю шаг на случай, если он кому-то поможет.

Это мой первый ответ на stackoverflow, поэтому я прошу прощения за разрозненный процесс здесь и надеюсь, что он все еще был полезен! :)

Это примечания, если вы хотите просто объявить типы для модуля узла, где типизация недоступна.

Solution--->

  1. создать файл global.d.ts внутри каталога src.
  2. , потому что машинописный текст уже наблюдает за каталогом src
  3. и, таким образом, мы избегаем явного указания в tsconfig.json также загружать файлы определенного типа, потому что при этом мы можем переопределить другое место ввода по умолчанию

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

npm install --save @types/react-redux

Если у вас проблемы с реакцией npm install --save @ types / responsenpm install --save @ types / react

Получил после долгих хлопот В приложении React в папке src будет файл response-app-env.d.ts просто объявите там модуль

/// 
declare module 'react-color/lib/components/alpha/AlphaPointer'

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

Попробуйте npm i --save-dev @ types / response-materialize, если он существует, или добавьте новый файл объявления (.d.ts), содержащий модуль объявления 'реагировать-материализовать';

У меня была такая же проблема с типами response-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"]
}

Как этот:

{
  "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
}

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

Не удалось найти файл декларации для модуля response / jsx-runtime

Если у кого-то возникает эта ошибка, вы будете удивлены, узнав, что при создании приложения для реагирования с помощью create-response-appотображается только @ types / response in package.json. Но если вы заглянете в папку node_modules / @ types, вы не найдете ни одной папки response.

Решение состоит в том, чтобы просто полностью стереть папку node_modules и переустановить - npm install или, может быть, можно пойти с установкой отдельного модуля - npm install @ types / response.

У меня была аналогичная ошибка, но для меня это была response-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.

Могут быть случаи, когда некоторые зависимости не имеют типов и ts заставляет вас включать типы для этого. Существует обходной путь для решения проблемы: вместо этого следует использовать javascript.

например,

импорт {Charts} из «response-charts»; // ошибка: не удалось найти файл декларации для модуля «response-charts».

Обходной путь: const ReactChart = require ("response-charts"); // без ошибок

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

// @ts-ignore
import { Navbar, NavItem } from 'react-materialize';

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

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

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

Была такая же ошибка с response-router-dom.

This error occurs when you're working on a typescript project, default modules doesn't come with types that are needed with typescript.

Итак, я поискал на npmjs.com пакет с именем @ types / response-router-dom, если это не response-router-dom, который вы ищете, замените response-router- dom вашим нетипизированным модулем.

Найдите последнюю версию на сайте npm, затем добавьте ее в свой package.json вот так:

[...]
"dependencies": {
    [...]
    "@ types / response-router-dom": "^ 5.1.8",
    [...]
  },
[...]

Как только это будет сделано, запустите yarn install

Тогда должно качать!

Обязательно остановите ваш реагирующий локальный сервер и запустите его снова, выполнив следующие действия:

1 - Создать файл .d.ts вручную, вам просто нужно сделать следующее:

2 - введите src folder

3 - создать global.d.ts файл

4 - объявить в нем модули типа:

declare module 'module-name';

Я ответил на это здесь раньше и было приятно

2022 WebDevInsider