2017-01-04 5 views
7

Я пытаюсь импортировать компоненты из реагировать-материализоваться -Typcript react - Не удалось найти файл декларации для модуля '' react-materialize '. «Путь/к/модуль-name.js» неявно имеет любой тип

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

Но когда WebPack это compining мой .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

Вам необходимо установить типизации/типов для упаковки (НОЙ установка @ типов/реагировать-материализуется). Однако похоже, что этого еще не существует, поэтому вам может понадобиться создать его самостоятельно. Я нашел эту статью полезной - https://templecoding.com/blog/2016/03/31/creating-typescript-typings-for-existing-react-components/ –

+0

@T Митчелл, значит, это означает любые типы, которые мы отсутствуют, мы никогда не сможем скомпилировать webpack без создания этих типов? Должен быть какой-то способ? – Joy

+2

Существует способ - http://stackoverflow.com/questions/38224232/how-to-consume-npm-modules-from-typescript –

ответ

9

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

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

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

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

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

Так что теперь машинопись не жаловалась на типы, которые больше не найдены. :) win win status now :)

+0

Я пропустил часть об этом, находясь в отдельном файле. Похоже, что эти инструкции 'declare' в файле с именем' index.d.ts' исправили это для меня. Мне не пришлось прикоснуться к typeRoots. –

+0

Это работает отлично, но вызывает проблемы при использовании 'require' для других вещей, таких как изображения. В принципе, это просто не позволяет вам использовать 'require' для чего-либо. –

+0

Это решение больше не работает с новейшими TS. 'nvalid имя модуля в дополнении. Модуль «some-dumb-lib-with-no-types» разрешает нетипизированный модуль в «/ path/to/module», который не может быть дополнен. ' – FlavorScape

7

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

1

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

Как так:

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

более Hacky способ добавить, например., в boot.tsx линии

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

с

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

в declare_modules.d.ts

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

0

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

НОЙ установка --save @ типов/реагировать-перевождите

 Смежные вопросы

  • Нет связанных вопросов^_^