Ich versuche Komponenten aus React-Materialise zu importieren als -
import {Navbar, NavItem} from 'react-materialize';
Aber wenn das Webpack meine erstellt .tsx
, wird ein Fehler für die oben genannten als - ausgelöst.
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.
Eine Lösung dafür. Ich bin nicht sicher, wie ich diese Importanweisung für die Arbeit mit ts-loader
und das Webpack auflösen soll.
Das index.js
von React-Materialise sieht so aus. Aber wie kann ich das für den Modulimport in meinen eigenen Dateien beheben?
https://github.com/react-materialize/react-materialize/blob/master/src/index.js
Antworten:
Ich hatte einen ähnlichen Fehler, aber für mich war es
react-router
. Es wurde behoben, indem Typen dafür installiert wurden.Error:
(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.
Wenn Sie zu deaktivieren Website möchten breit können Sie stattdessen bearbeiten
tsconfig.json
und SatznoImplicitAny
zufalse
.quelle
"noImplicitAny": false,
deaktiviert (ich habe dieses Problem aufgrund der Verwendung des reaktionsnativen init MyProject --template typescript, zumindest glaube ich) 👍yarn add @types/react-router --dev
Für diejenigen, die wissen wollten, wie ich das überwunden habe. Ich habe ein paar Sachen gemacht.
In meinem Projekt habe ich einen Ordner namens erstellt
@types
und ihn zu tsconfig.json hinzugefügt, um alle erforderlichen Typen daraus zu finden. So sieht es ungefähr aus -"typeRoots": [ "../node_modules/@types", "../@types" ]
Und darin habe ich eine Datei namens erstellt
alltypes.d.ts
. Um die unbekannten Typen daraus zu finden. Für mich waren dies die unbekannten Typen und ich habe sie dort hinzugefügt.declare module 'react-materialize'; declare module 'react-router'; declare module 'flux';
Das Typoskript beschwerte sich nun nicht mehr über die nicht mehr gefundenen Typen. :) Win Win Situation jetzt :)
quelle
declare
Anweisungen in eine Datei mit dem Namenindex.d.ts
Fix für mich einfügen. Ich musste typeRoots nicht berühren.require
für andere Dinge wie Bilder. Grundsätzlich erlaubt es Ihnen einfach nicht,require
für irgendetwas zu verwenden.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.
react-countdown-clock
, habe einen@types
Ordner erstellt und alle oben genannten Schritte ausgeführt. immer noch den gleichen Fehler bekommen.Ich hatte das gleiche Problem mit React-Redux-Typen. Die einfachste Lösung war das Hinzufügen zu tsconfig.json:
"noImplicitAny": false
Beispiel:
{ "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"] }
quelle
IntelliJ
IDE, aber die benutzerdefiniertetypeRoots
Methode (die akzeptierte Antwort ist) funktionierte sogar inVS Code
IDEWenn
@types/<package>
für das von Ihnen verwendete Modul keine vorhanden ist , können Sie das Problem leicht umgehen, indem Sie oben einen// @ts-ignore
Kommentar hinzufügen, z// @ts-ignore import { Navbar, NavItem } from 'react-materialize';
Alternativ können Sie
@types/<package>
Folgendes erstellen :Veröffentlichung von Deklarationsdateien
Definitiv getippt, wie kann ich dazu beitragen
quelle
@types
BTW verfügbar. Erstellt ein Problem auf dem Repo ... github.com/geelen/react-snapshot/issues/131In meinem Fall hatte ich ein Problem mit der Reaktion, also fing ich an:
npm install @types/react
und dann zum
npm install @types/react-dom
Das hat bei mir funktioniert
quelle
Alles was Sie tun müssen, ist das folgende Skript auszuführen. Entfernen Sie dann das Modul, das Sie verwenden möchten, und installieren Sie es erneut.
quelle
Ich hatte dieses Problem, als ich
react-router-dom
die neue CRA-App mit Typoskript hinzufügte . Nachdem ich hinzugefügt hatte@types/react-router
, wurde das Problem behoben.quelle
Ich hatte das gleiche Problem, aber nicht unbedingt in Bezug auf Typoskript, also hatte ich ein bisschen Probleme mit diesen verschiedenen Optionen. Ich mache eine sehr einfache Create-React-App mit einem bestimmten Modul
react-portal-tooltip,
, bei dem ein ähnlicher Fehler auftritt:Ich habe zuerst viele Schritte ausprobiert - verschiedene
.d.ts
Dateien hinzufügen , verschiedene npm-Installationen.Aber was schließlich für mich funktionierte, war
touch src/declare_modules.d.ts
dann insrc/declare_modules.d.ts
:declare module "react-portal-tooltip";
und in
src/App.js
:import ToolTip from 'react-portal-tooltip'; // import './declare_modules.d.ts'
Ich hatte ein wenig Probleme mit den verschiedenen Standorten, um diese allgemeine Strategie zum Deklarieren von Modulen zu verwenden (ich bin ein Anfänger), daher denke ich, dass dies mit verschiedenen Optionen funktionieren wird, aber ich habe Pfade für das, was mir funktioniert hat, eingeschlossen.
Ich hielt
import './declare_modules.d.ts'
es anfangs für notwendig. Obwohl es jetzt so scheint, als wäre es nicht so! Aber ich schließe den Schritt ein, falls es jemandem hilft.Dies ist meine erste Stackoverflow-Antwort, daher entschuldige ich mich für den verstreuten Prozess hier und hoffe, dass er immer noch hilfreich war! :) :)
quelle
Dieser Fehler wird auch behoben, wenn das Paket, das Sie verwenden möchten , über eigene Typdateien verfügt und diese im Attribut package.json aufgeführt sind
typings
Wie so:
{ "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 }
quelle
Ein hackigerer Weg ist es, z. B. in boot.tsx die Zeile hinzuzufügen
import './path/declare_modules.d.ts';
mit
declare module 'react-materialize'; declare module 'react-router'; declare module 'flux';
im
declare_modules.d.ts
Es funktioniert, aber andere Lösungen sind IMO besser.
quelle
Ich habe die folgenden Befehle an der Eingabeaufforderung von nodejs ausgeführt, während ich mich im Projektordnerverzeichnis befand:
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';
Ich habe das oben genannte gemacht (obwohl ich bereits npm installiert hatte) und es hat funktioniert!
quelle
Für meinen Fall war die Frage , dass die Typen zu package.json Datei wurden nicht unter hinzugefügt bekommen devDependencies es zu beheben Ich lief
npm install --save-dev @types/react-redux
die Notiz--save-dev
quelle
Versuchen Sie, zur Datei tsconfig.json hinzuzufügen:
"noImplicitAny": false
hat bei mir funktioniertquelle
funktioniert gut
quelle