Próbuję zaimportować komponenty z Re-materialize jako -
import {Navbar, NavItem} from 'react-materialize';
Ale kiedy webpack kompiluje mój .tsx
, generuje błąd dla powyższego, ponieważ -
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.
Wszelkie rozwiązania tego problemu. Nie jestem pewien, jak rozwiązać tę instrukcję importu, aby działała z ts-loader
pakietem internetowym.
Tak index.js
wygląda reakcja materializacji. Ale jak rozwiązać ten problem w przypadku importu modułu w moich własnych plikach ...
https://github.com/react-materialize/react-materialize/blob/master/src/index.js
Odpowiedzi:
Miałem podobny błąd, ale dla mnie był
react-router
. Rozwiązałem to, instalując dla niego typy.Błąd:
(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.
Jeśli chcesz, aby wyłączyć OBSZARU szeroki Zamiast tego można edytować
tsconfig.json
i zestawnoImplicitAny
dofalse
.źródło
"noImplicitAny": false,
go wyłączył (dostałem ten problem z powodu użycia react-native init MyProject - maszynopis szablonu, przynajmniej tak mi się wydaje) 👍yarn add @types/react-router --dev
Dla tych, którzy chcieli wiedzieć, jak to przezwyciężyłem. Zrobiłem coś w rodzaju hackowania.
W moim projekcie utworzyłem folder o nazwie
@types
i dodałem go do tsconfig.json, aby znaleźć w nim wszystkie wymagane typy. Więc wygląda to trochę tak -"typeRoots": [ "../node_modules/@types", "../@types" ]
Wewnątrz utworzyłem plik o nazwie
alltypes.d.ts
. Aby znaleźć z niego nieznane typy. więc dla mnie były to nieznane typy i dodałem to tam.declare module 'react-materialize'; declare module 'react-router'; declare module 'flux';
Więc teraz maszynopis nie narzekał na typy, których już nie znaleziono. :) wygraj sytuację wygrywaj teraz :)
źródło
declare
instrukcji w pliku o nazwieindex.d.ts
naprawiło to za mnie. Nie musiałem dotykać opcji TypeRoots.require
do innych rzeczy, takich jak obrazy. Zasadniczo po prostu nie pozwala ci używaćrequire
do niczego.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
utworzeniem@types
folderu i wykonałem wszystkie powyższe kroki. nadal pojawia się ten sam błąd.Miałem ten sam problem z typami reakcyjno-redukującymi. Najprostsze rozwiązanie zostało dodane do tsconfig.json:
"noImplicitAny": false
Przykład:
{ "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"] }
źródło
IntelliJ
IDE, ale niestandardowatypeRoots
metoda (która jest akceptowaną odpowiedzią) działała nawet wVS Code
IDEJeśli nie ma
@types/<package>
modułu, którego używasz, możesz łatwo ominąć problem, dodając// @ts-ignore
komentarz powyżej, np// @ts-ignore import { Navbar, NavItem } from 'react-materialize';
Alternatywnie możesz utworzyć brakujące
@types/<package>
:publikowanie plików deklaracji
Zdecydowanie napisane, jak mogę wnieść swój wkład
źródło
@types
jeszcze dostępnej. Utworzono problem w repozytorium ... github.com/geelen/react-snapshot/issues/131W moim przypadku miałem problem z reakcją, więc zacząłem robić:
npm install @types/react
a następnie do
npm install @types/react-dom
To zadziałało dla mnie
źródło
Wszystko, co musisz zrobić, to uruchomić poniższy skrypt. Następnie usuń / ponownie zainstaluj moduł, którego chcesz użyć.
źródło
Miałem ten problem, kiedy dodałem
react-router-dom
do nowej aplikacji CRA przy użyciu maszynopisu. Po dodaniu@types/react-router
problem został rozwiązany.źródło
Miałem ten sam problem, ale niekoniecznie związany z maszynopisem, więc zmagałem się trochę z tymi różnymi opcjami. Robię bardzo podstawową aplikację „create-react-app” przy użyciu określonego modułu i powoduje
react-portal-tooltip,
podobny błąd:Najpierw wypróbowałem wiele kroków - dodawanie różnych
.d.ts
plików, różne instalacje npm.Ale to, co ostatecznie zadziałało dla mnie,
touch src/declare_modules.d.ts
tosrc/declare_modules.d.ts
:declare module "react-portal-tooltip";
i w
src/App.js
:import ToolTip from 'react-portal-tooltip'; // import './declare_modules.d.ts'
Trochę zmagałem się z różnymi lokalizacjami, aby użyć tej ogólnej strategii `` deklarowania modułu '' (jestem bardzo początkującym), więc myślę, że będzie to działać z różnymi opcjami, ale mam włączone ścieżki do tego, co zadziałało.
Początkowo myślałem, że
import './declare_modules.d.ts'
to konieczne. Chociaż teraz wydaje się, że tak nie jest! Ale włączam krok na wypadek, gdyby to komuś pomogło.To jest moja pierwsza odpowiedź na temat przepełnienia stosu, więc przepraszam za rozproszony proces tutaj i mam nadzieję, że nadal był pomocny! :)
źródło
Ten błąd zostanie również naprawiony, jeśli pakiet, którego próbujesz użyć, ma własne pliki typu i jest wymieniony w atrybucie package.json
typings
Tak jak to:
{ "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 }
źródło
Bardziej hackerskim sposobem jest dodanie linii np. W boot.tsx
import './path/declare_modules.d.ts';
z
declare module 'react-materialize'; declare module 'react-router'; declare module 'flux';
w
declare_modules.d.ts
Działa, ale inne rozwiązania są lepsze IMO.
źródło
To, co zrobiłem, to uruchomienie następujących poleceń z wiersza poleceń nodejs w katalogu folderu projektu:
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';
Zrobiłem powyższe (chociaż miałem już zainstalowany npm) i zadziałało!
źródło
Jeśli ktoś ma ten błąd, zdziwisz się, że podczas tworzenia aplikacji Reaguj z
create-react-app
, pojawia się on tylko@types/react
wpackage.json
. Ale jeśli sprawdzisz zawartośćnode_modules/@types
folderu, nie znajdziesz żadnego folderureact
.Rozwiązaniem jest po prostu
node_modules
całkowite wyczyszczenie folderu i ponowna instalacja -npm install
lub może można przejść z indywidualną instalacją modułu -npm install @types/react
.źródło
w 2021 roku, aby utworzyć
.d.ts
plik ręcznie, wystarczy wykonać następujące czynności:1- wejdź
src folder
2- Utwórz
global.d.ts
plik3-zadeklaruj w nim moduły takie jak:
declare module 'module-name';
Odpowiedziałem na to tutaj wcześniej i było miło
źródło
Na moim przypadku problemem było to, że typy nie były coraz dodany do pliku package.json pod devDependencies go naprawić Pobiegłem
npm install --save-dev @types/react-redux
pamiętać, że--save-dev
źródło
spróbuj dodać do pliku tsconfig.json:
"noImplicitAny": false
zadziałało dla mnieźródło
Mam to po wielu kłopotach W aplikacji React w folderze src będzie plikreak-app-env.d.ts po prostu zadeklaruj tam moduł
/// <reference types="react-scripts" /> declare module 'react-color/lib/components/alpha/AlphaPointer'
źródło
działa dobrze
źródło