J'essaie d'importer des composants de react-matérialiser en tant que -
import {Navbar, NavItem} from 'react-materialize';
Mais lorsque le pack Web compile mon .tsx
, une erreur est générée pour ce qui précède:
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.
Toute résolution pour cela .Je ne sais pas comment résoudre cette instruction d'importation pour qu'elle fonctionne avec ts-loader
et webpack.
Le index.js
de réagit-matérialiser ressemble à ceci. Mais comment résoudre ceci pour l’importation de modules dans mes propres fichiers?.
https://github.com/react-materialize/react-materialize/blob/master/src/index.js
Pour ceux qui voulaient savoir comment j'ai surmonté cela. J'ai fait un truc de genre.
Dans mon projet, j'ai créé un dossier appelé @Types
et l'a ajouté à tsconfig.json pour trouver tous les types requis. Donc, cela ressemble un peu à ceci -
"typeRoots": [
"../node_modules/@types",
"../@types"
]
Et à l'intérieur de cela, j'ai créé un fichier appelé alltypes.d.ts
. Pour en trouver les types inconnus. donc pour moi c'étaient des types inconnus et je les ai ajoutés là-bas.
declare module 'react-materialize';
declare module 'react-router';
declare module 'flux';
Alors maintenant, le TypeScript ne se plaignait plus des types non trouvés. :) gagner situation gagnant maintenant :)
J'ai eu une erreur similaire mais pour moi, c'était react-router
. Résolu en installant des types pour cela.
npm install --save @types/react-router
Erreur:
(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.
Si vous souhaitez désactiver l'ensemble du site, vous pouvez éditer tsconfig.json
et définir noImplicitAny
sur false
.
J'ai eu le même problème avec les types react-redux. La solution la plus simple a été d'ajouter à 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"]
}
Tout ce que vous avez à faire est d’exécuter le script ci-dessous. Ensuite, supprimez/réinstallez le module que vous souhaitez utiliser.
npm install --save @ types/react-redux
Dans tsconfig.json, définissez "noImplicitAny": false
Qui a résolu ce problème pour moi
Ce que j'ai fait a été d'exécuter les commandes suivantes à partir de l'invite de commande nodejs dans le répertoire du dossier du projet:
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';
J'ai fait ce qui précède (même si j'avais déjà installé npm) et cela a fonctionné!
De plus, cette erreur est corrigée si le paquet que vous essayez d'utiliser a son propre fichier type et il est répertorié dans l'attribut package.jsontypings
Ainsi:
{
"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
}
S'il n'y a pas @types/<package>
pour le module que vous utilisez, vous pouvez facilement résoudre le problème en ajoutant // @ts-ignore
i.e.
// @ts-ignore
import { render } from 'react-snapshot';
Sinon, vous pouvez créer le @types/<package>
manquant suivant:
Pour mon cas, le problème était que les types n'étaient pas ajoutés au fichier package.json sousdevDependenciespour y remédier, j'ai exécuté npm install --save-dev @types/react-redux
notez le --save-dev
fonctionne très bien
npm install @types/react-materialize