टाइपस्क्रिप्ट प्रतिक्रिया - मॉड्यूल '' रिएक्ट-मटेरियल '' के लिए डिक्लेरेशन फाइल नहीं पा सकी। 'पथ / से / मॉड्यूल-name.js' का तात्पर्य किसी भी प्रकार से है


110

मैं प्रतिक्रिया-भौतिक से घटकों को आयात करने की कोशिश कर रहा हूं -

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

लेकिन जब वेबपैक मेरा संकलन कर रहा है तो .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वेबपैक के साथ काम करने के लिए कैसे हल किया जाए ।

index.jsप्रतिक्रिया-अमल में लाना दिखता है की यह पसंद है। लेकिन अपनी खुद की फाइलों में मॉड्यूल आयात के लिए इसे कैसे हल किया जाए ..

https://github.com/react-materialize/react-materialize/blob/master/src/index.js


2
आपको पैकेज के लिए टाइपिंग / प्रकार स्थापित करने की आवश्यकता है (npm स्थापित @ प्रकार / प्रतिक्रिया-भौतिककृत)। हालाँकि, ऐसा लगता है कि यह अभी तक मौजूद नहीं है, इसलिए आपको इसे स्वयं बनाने की आवश्यकता हो सकती है। मुझे यह लेख उपयोगी लगा - temcoding.com/blog/2016/03/31/…
टी मिशेल

@ मिचेल का मतलब यह है कि किसी भी प्रकार के प्रकार जो हम याद कर रहे हैं, हम कभी भी इन प्रकारों को बनाए बिना वेबपैक संकलन नहीं कर पाएंगे? कोई रास्ता होना चाहिए?
जॉय

2
वहाँ एक रास्ता है - stackoverflow.com/questions/38224232/…
टी मिशेल

यह मेरे लिए थोड़ा सा वर्कअराउंड की तरह लगता है।
सुपरबाइपरडॉपर

जवाबों:


81

मेरे पास एक समान त्रुटि थी लेकिन मेरे लिए यह था 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
हालाँकि वर्तमान में ऐसा कोई @ प्रकार / प्रतिक्रिया-नेविगेशन-टैब पैकेज नहीं है, फिर भी उल्लेखित "noImplicitAny": false,ने इसे अक्षम कर दिया (प्रतिक्रिया-मूल init MyProject --template टाइपस्क्रिप्ट का उपयोग करने के कारण मुझे यह समस्या मिली, मुझे लगता है कि कम से कम) such
शीर्ष -मास्टर

1
याyarn add @types/react-router --dev
उमर तारिक

65

उन लोगों के लिए जो जानना चाहते थे कि मैंने इसे कैसे पार किया। मैंने एक हैक तरह का सामान किया।

अपने प्रोजेक्ट के अंदर मैंने एक फोल्डर बनाया, जिसे @typestsconfig.json के साथ जोड़ा और उसमें से सभी आवश्यक प्रकारों को ढूंढा। तो यह कुछ इस तरह दिखता है -

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

और उसके अंदर मैंने एक फाइल बनाई जिसका नाम है alltypes.d.ts। इससे अज्ञात प्रकारों का पता लगाने के लिए। इसलिए मेरे लिए ये अज्ञात प्रकार थे और मैंने इसे वहाँ पर जोड़ा।

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

इसलिए अब टाइपस्क्रिप्ट ने उन प्रकारों के बारे में शिकायत नहीं की जो अब नहीं पाए गए हैं। :) अब जीत की स्थिति जीत :)


3
मैं इसके बारे में एक अलग फाइल में होने से चूक गया। उन declareबयानों को एक फाइल में रखना पसंद करता है, जिसका नाम index.d.tsमेरे लिए तय किया गया है। मुझे टाइपरूट्स को छूना नहीं था।
स्कॉटी वैगनर

यह ठीक काम करता है, लेकिन यह मुद्दों का कारण बनता है जब require छवियों जैसे अन्य सामान के लिए उपयोग करना। असल में, यह आपको requireकिसी भी चीज़ के लिए उपयोग करने की अनुमति नहीं देता है।
ध्रुवदत्त जाधव

1
यह समाधान अब नवीनतम TS के साथ काम नहीं करता है। 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.
फ्लेवर्सस्केप

2
कुछ भी ध्यान देने योग्य है: आपके स्रोत के स्थान के आधार पर, आपको ".." को "अपने" में "सरणी"
netpoetica

1
मेरे पास समस्याएँ हैं react-countdown-clock, @typesफ़ोल्डर बनाया और उपरोक्त सभी चरणों को किया। अभी भी वही त्रुटि हो रही है।
ज्योति

48

मैं प्रतिक्रिया-redux प्रकार के साथ एक ही समस्या है। सबसे सरल समाधान 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"]
}

यह IntelliJIDE में बहुत अच्छा काम करता है , लेकिन कस्टम typeRootsविधि (जो स्वीकृत उत्तर है) ने VS CodeIDE में भी काम किया
टॉप-मास्टर

6
मुझे लगता है कि यह एक हैक है, हालांकि इससे समस्या हल हो गई लेकिन क्या इस समस्या का कोई वैध और स्थायी समाधान है?
परदीप जैन

मुझे लगता है कि यह इस समस्या का सबसे अच्छा समाधान है, मुझे नहीं लगता कि यह npm के लिए व्यवहार्य है, जो हर पैकेज को गलत तरीके से फेंकता है
गिल्बर्ट आर।

34

यदि @types/<package>आपके द्वारा उपयोग किए जा रहे मॉड्यूल के लिए कोई नहीं है , तो आप आसानी से // @ts-ignoreउपरोक्त टिप्पणी को जोड़कर समस्या को दरकिनार कर सकते हैं

// @ts-ignore
import { Navbar, NavItem } from 'react-materialize';

वैकल्पिक रूप से आप @types/<package>निम्नलिखित लापता बना सकते हैं :

घोषणा फ़ाइलें प्रकाशन

निश्चित रूप से यह बताया कि मैं कैसे योगदान कर सकता हूं


1
इस पैकेज में @typesअभी तक उपलब्ध नहीं है BTW। रेपो पर एक मुद्दा बनाया ... github.com/geelen/react-snapshot/issues/131
doublejosh

21

मेरे मामले में मुझे प्रतिक्रिया के साथ समस्या थी, इसलिए मैंने करना शुरू कर दिया:

npm install @types/react

और फिर करने के लिए

npm install @types/react-dom

इसने मेरे लिए काम किया


1
यहां तक ​​कि कठिन वे पहले से ही स्थापित थे, उन आदेशों को फिर से चलाने से मेरे लिए समस्या हल हो गई।
हिरंजर

मूल रूप से, यह आपके मौजूदा संकुल को अद्यतन करता है जब आप कमांड्स को फिर से चलाते हैं। यही कारण था कि समस्या हल हो गई है।
अनंत लालचंदानी

7

आपको केवल स्क्रिप्ट को चलाने की आवश्यकता है। फिर, उस मॉड्यूल को निकालें / पुनः स्थापित करें जिसे आप उपयोग करना चाहते हैं।

npm install --save @types/react-redux

1
वहाँ एक @ प्रकार / प्रतिक्रिया-भौतिक रूप से उपलब्ध नहीं दिखाई देता है
RonLugge

6

मेरे पास यह मुद्दा था जब मैंने react-router-domटाइपस्क्रिप्ट का उपयोग करके नए CRA ऐप में जोड़ा था। मैंने जोड़ा के बाद @types/react-router, मुद्दा तय हो गया था।


इसे स्थापित करने के बाद क्या करना है?
परदीप जैन

6

मुझे यही समस्या थी लेकिन जरूरी नहीं कि टाइपस्क्रिप्ट से संबंधित हो, इसलिए मैंने इन विभिन्न विकल्पों के साथ थोड़ा संघर्ष किया। मैं react-portal-tooltip,इसी तरह की त्रुटि प्राप्त करने वाले एक विशिष्ट मॉड्यूल का उपयोग करके एक बहुत ही बुनियादी क्रिएट-रिएक्शन-ऐप बना रहा हूं :

मॉड्यूल 'प्रतिक्रिया-पोर्टल-टूलटिप' के लिए एक घोषणा फ़ाइल नहीं मिल सकी। '/ nnode_modules/react-portal-tooltip/lib/index.js' का अर्थ 'कोई' प्रकार है। कोशिश करें npm install @types/react-portal-tooltipकि यह मौजूद है या declare module 'react-portal-tooltip';ts (7016) वाली नई घोषणा (.d.ts) फ़ाइल जोड़ें

मैंने पहले कई चरणों की कोशिश की - विभिन्न .d.tsफाइलें, विभिन्न एनपीएम इंस्टॉल करना।

लेकिन क्या अंततः मेरे लिए काम किया था touch src/declare_modules.d.ts तो में src/declare_modules.d.ts:

declare module "react-portal-tooltip";

और इसमें src/App.js:

import ToolTip from 'react-portal-tooltip';
// import './declare_modules.d.ts'

मैंने इस सामान्य 'घोषित मॉड्यूल' की रणनीति (मैं बहुत शुरुआती हूं) का उपयोग करने के लिए विभिन्न स्थानों के साथ थोड़ा संघर्ष किया, इसलिए मुझे लगता है कि यह अलग-अलग विकल्पों के साथ काम करेगा लेकिन मैंने जो काम किया उसके लिए पथ शामिल हूं।

मैंने शुरू में सोचा import './declare_modules.d.ts'था कि आवश्यक था। हालांकि अब ऐसा लगता है कि यह नहीं है! लेकिन मैं किसी की मदद करने के मामले में कदम से शामिल हूं।

यह मेरा पहला स्टैकओवरफ़्लो उत्तर है इसलिए मैं यहाँ बिखरी हुई प्रक्रिया के लिए माफी माँगता हूँ और आशा करता हूँ कि यह अभी भी सहायक थी! :)


2
यह वास्तव में साफ और सरल है। धन्यवाद। अच्छा काम करते रहें!
क्यूबेलस्टर

4

इसके अलावा, यह त्रुटि ठीक हो जाता है, तो पैकेज आप उपयोग की कोशिश कर रहे यह खुद प्रकार फ़ाइल (फ़ाइलें) है है और उस में यह उसमें है package.json typings विशेषता

इस तरह:

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

3

एक और अधिक हैक करने का तरीका है, जैसे कि boot.tsx लाइन में

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

साथ में

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

में declare_modules.d.ts

यह काम करता है लेकिन अन्य समाधान बेहतर IMO हैं।


3

मैंने क्या किया था प्रॉजेक्ट फ़ोल्डर निर्देशिका में नोडज कमांड प्रॉम्प्ट से निम्नलिखित कमांड चलाए जा रहे थे:

  1. npm init
  2. npm install -g webpack
  3. npm install --save react react-dom @types/react @types/react-dom
  4. npm install --save-dev typescript awesome-typescript-loader source-map-loader
  5. npm install ajv@^6.0.0
  6. npm i react-html-id
  7. कोड जोड़कर App.js फ़ाइल में पैकेज (नोड मॉड्यूल में) आयात करें: import UniqueId from 'react-html-id';

मैंने ऊपर किया (हालाँकि मेरे पास पहले से ही npm स्थापित था) और यह काम कर गया!


2

मॉड्यूल 'प्रतिक्रिया / jsx-runtime' के लिए एक घोषणा फ़ाइल नहीं मिल सकी

अगर किसी के पास यह त्रुटि है, तो आपको यह जानकर आश्चर्य होगा कि जब रिएक्शन ऐप बनाया जाता है create-react-app, तो यह केवल दिखाता @types/reactहै package.json। लेकिन अगर आप node_modules/@typesफ़ोल्डर के अंदर जांच करते हैं , तो आपको कोई भी फ़ोल्डर नहीं मिलेगाreact

समाधान केवल node_modulesफ़ोल्डर को पूरी तरह से मिटा देना और पुनर्स्थापित करना है - npm installया शायद व्यक्तिगत मॉड्यूल इंस्टॉलेशन के साथ जा सकता है - npm install @types/react


1
आपने इसे सही बताया :)
Awais Usmani

1

2021 में .d.tsमैन्युअल रूप से फ़ाइल बनाने के लिए , आपको बस निम्नलिखित करने की आवश्यकता है:

1- दर्ज करें src folder

2- global.d.tsफाइल बनाएं

इसमें 3-घोषित मॉड्यूल जैसे:

declare module 'module-name';

मैंने पहले यहाँ इसका उत्तर दिया और यह अच्छा था


0

मेरे मामले के लिए मुद्दा यह था कि प्रकारों को पैकेज में जोड़ा नहीं जा रहा था। इसे ठीक करने के लिए भक्ति पर निर्भरता के तहत फ़ाइल को जमा करें npm install --save-dev @types/react-redux--save-dev


0

tsconfig.json फ़ाइल में जोड़ने का प्रयास करें: "noImplicitAny": false मेरे लिए काम किया


1
आप मूल रूप से ऐसा करके टाइपस्क्रिप्ट द्वारा प्रदान की गई सभी अच्छाई को अक्षम कर रहे हैं। सिर्फ नियमित जेएस का उपयोग क्यों न करें?
मैट रुवे

0

मुझे बहुत परेशानी के बाद मिला। रिएक्शन ऐप में एक रिएक्शन-ऐप-env.d.ts फाइल होगी जो src फोल्डर में है, बस वहां मॉड्यूल रखें

/// <reference types="react-scripts" />
declare module 'react-color/lib/components/alpha/AlphaPointer'


-2

ठीक काम करता है

npm install @types/react-materialize

3
प्रतिक्रिया-भौतिक के लिए कोई प्रकार नहीं हैं
katzmopolitan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.