Typoskript reagieren - Konnte nicht finden, eine Erklärung-Datei für das Modul "reagieren-materialisieren'. 'path/to/module-name.js' implizit hat jede Art
Ich versuche zu importieren Komponenten aus reagieren-materialisieren -
import {Navbar, NavItem} from 'react-materialize';
Aber wenn das webpack ist compining meine .tsx
wirft es einen Fehler für die oben genannten als -
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.
Irgendeine Lösung für dieses .Ich bin mir nicht sicher, wie diese zu lösen import-Anweisung für die Arbeit mit ts-loader
und webpack.
Den index.js
reagieren-materialisieren sieht gefällt das . Aber wie kann man dies beheben, für das Modul import in meinen eigenen Dateien ..
https://github.com/react-materialize/react-materialize/blob/master/src/index.js
- Zu installieren, müssen Sie die Testungen/Typen für das Paket (npm installieren @Typen/reagieren-materialisieren). Aber es sieht aus wie dieses noch nicht existiert, so müssen Sie möglicherweise, um Sie selbst erstellen. Ich fand diesen Artikel hilfreich - templecoding.com/blog/2016/03/31/...
- Mitchell, so bedeutet das, dass jede Art von Typen, die uns fehlen, wären wir niemals in der Lage sein zu kompilieren webpack ohne dass dies die Erstellung dieser Art ? Sollte es eine Möglichkeit ?
- Es gibt einen Weg - stackoverflow.com/questions/38224232/...
- dies scheint ein bisschen wie ein workaround für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für diejenigen, die wollte wissen, wie ich dies überwinden . Ich habe einen hack solche Sachen .
In meinem Projekt habe ich einen Ordner erstellt namens
@Types
und fügte hinzu, es zu tsconfig.json für finden Sie alle Arten von es . So sieht es ein wenig wie diese -Und drinnen, dass ich erstellt eine Datei namens
alltypes.d.ts
. Finden Sie die unbekannten Arten von es . also für mich waren diese unbekannten Typen und ich habe es dort drüben.So, jetzt das Typoskript nicht beschweren sich über die Art nicht mehr gefunden . 🙂 win-win-situation jetzt 🙂
declare
- Anweisungen in eine Datei mit dem Namenindex.d.ts
es fest für mich. Ich habe nicht zu berühren typeRoots.require
für andere Sachen wie Bilder. Im Grunde genommen, geht es nicht nur erlauben, Sie zu verwendenrequire
für alles.nvalid module name in augmentation. Module 'some-dumb-lib-with-no-types' resolves to an untyped module at '/path/to/module', which cannot be augmented.
Ich hatte einen ähnlichen Fehler, aber für mich war es
react-router
. Gelöst wird es durch die Installation von Arten für Sie.Fehler:
Wenn Sie möchten, um es zu deaktivieren site-weit, können Sie stattdessen Bearbeiten
tsconfig.json
- und set -noImplicitAny
zufalse
."noImplicitAny": false,
hast, deaktivieren Sie es (ich habe dieses Problem, aufgrund der Verwendung reagieren-native-init MyProject --template Typoskript, ich denke das zumindest so) ?Ich hatte dasselbe problem mit reagieren-redux-Typen. Die einfachste Lösung
war hinzufügen, um tsconfig.json:
Beispiel:
IntelliJ
IDE, aber die customtypeRoots
- Methode (das ist die akzeptierte Antwort) hat auch die Arbeit inVS Code
IDEAlles, was Sie tun müssen, ist, führen Sie das Skript unten. Dann entfernen/re-installieren Sie das Modul, das Sie verwenden möchten.
Auch dieser Fehler wird behoben, wenn das Paket, das Sie versuchen, zu verwenden hat seinen eigenen Typ-Datei(en) und es ist aufgeführt in der Paket.json
typings
AttributEtwa so:
Mehr hacky Möglichkeit ist das hinzufügen von zB., im boot.tsx die Linie
mit
in
declare_modules.d.ts
Funktioniert es aber auch andere Lösungen sind besser IMO.
Was ich Tat, war, führen Sie die folgenden Befehle aus den nodejs-Eingabeaufforderung während Sie in den Projekt-Ordner-Verzeichnis:
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 ajv@^6.0.0
npm i react-html-id
import UniqueId from 'react-html-id';
Habe ich die oben genannten(ich hatte zwar bereits npm installiert) und es funktionierte!
funktioniert Prima
Meinem Fall das Problem war, dass die Typen waren nicht immer Hinzugefügt, um Paket.json-Datei unter devDependencies, um es zu beheben ich lief
npm install --save-dev @types/react-redux
Hinweis: die--save-dev
Wenn es keine
@types/<package>
für das Modul, das Sie verwenden, können Sie leicht beheben das Problem durch hinzufügen//@ts-ignore
d.h.Alternativ können Sie die fehlenden
@types/<package>
folgenden:Erklärung-Dateien veröffentlichen
DefinitelyTyped wie kann ich dazu beitragen
In tsconfig.json, set
"noImplicitAny": false
Feste das für mich