টাইপসক্রিপ্ট প্রতিক্রিয়া - মডিউল '' রিঅ্যাক্ট-ম্যাটারিয়ালাইজ 'এর জন্য কোনও ঘোষণার ফাইল খুঁজে পাওয়া যায়নি। 'পাথ / টু / মডিউল-নাম.js' এর স্পষ্টতই কোনও প্রকার রয়েছে


99

আমি প্রতিক্রিয়াযুক্ত হতে উপাদানগুলি আমদানি করার চেষ্টা করছি -

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.

এর জন্য যে কোনও রেজোলিউশন I আমি কীভাবে এই আমদানির বিবৃতিটি ts-loaderএবং ওয়েবপ্যাকের সাথে কাজ করার সমাধান করব তা নিশ্চিত to

index.jsপ্রতিক্রিয়া-সত্যে পরিণত রূপ এই লেগেছে। তবে নিজের ফাইলগুলিতে মডিউল আমদানির জন্য এটি কীভাবে সমাধান করবেন ..

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


4
প্যাকেজের জন্য আপনাকে টাইপিং / প্রকারগুলি ইনস্টল করতে হবে (এনএমপি ইনস্টল @ প্রকার / প্রতিক্রিয়া-উপাদানকরণ)। যাইহোক, দেখে মনে হচ্ছে এটি এখনও বিদ্যমান নেই, সুতরাং আপনার নিজের এটি তৈরি করতে হতে পারে। আমি এই নিবন্ধটি সহায়ক হিসাবে খুঁজে পেয়েছি - টেম্প্লেকোডিং.com
টি মিশেল

@ টি মিচেল এর মানে কি এই যে কোনও ধরণের যা আমরা অনুপস্থিত তা কি এই প্রকারগুলি তৈরি না করে আমরা কখনই ওয়েবপ্যাক সংকলন করতে সক্ষম হব না? কিছু উপায় আছে?
জয়


এটি আমার কাছে কিছুটা কাজের মতো মনে হচ্ছে।
সুপারউবারডুপার

উত্তর:


73

আমারও তেমন ত্রুটি ছিল কিন্তু আমার জন্য ছিল 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


যদিও বর্তমানে এই ধরণের @ ধরণের / প্রতিক্রিয়া-নেভিগেশন-ট্যাব প্যাকেজ নেই, তবুও উল্লিখিতগুলি "noImplicitAny": false,এটি অক্ষম করেছে (প্রতিক্রিয়া নেটিভ মাই মাইপ্রজেক্ট --template টাইপস্ক্রিপ্ট ব্যবহার করার কারণে আমি এই সমস্যাটি পেয়েছি, আমি কমপক্ষে তাই মনে করি)
Top

4
বাyarn add @types/react-router --dev
ওমর তারিক

57

যারা জানতে চেয়েছিলেন আমি কীভাবে এটিকে কাটিয়েছি। আমি হ্যাক ধরণের জিনিস করেছি।

আমার প্রকল্পের ভিতরে আমি একটি ফোল্ডার তৈরি করেছি @typesএবং এটি থেকে সমস্ত প্রয়োজনীয় প্রকারের জন্য এটি tsconfig.json এ যুক্ত করেছি। সুতরাং এটি কিছুটা মনে হচ্ছে -

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

আর ভিতরে যে আমি নামক কোনো ফাইল নির্মিত alltypes.d.ts। এটি থেকে অজানা প্রকারগুলি সন্ধান করতে। সুতরাং আমার জন্য এগুলি অজানা প্রকার ছিল এবং আমি এটি সেখানে জুড়েছি।

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

সুতরাং এখন টাইপ স্ক্রিপ্ট আর ধরণের খুঁজে পাওয়া যায় নি সে সম্পর্কে অভিযোগ করেনি। :) এখন জয় পরিস্থিতি জয় :)


4
আমি আলাদা ফাইলটিতে থাকা অংশটি মিস করেছি। এই declareবিবৃতিটি একটি ফাইলের মধ্যে রাখার মতো বলে মনে হয় index.d.tsএটি এটি আমার জন্য স্থির। আমাকে টাইপরুটগুলি স্পর্শ করতে হয়নি।
স্কটি ওয়াগোনার

এটি ঠিক কাজ করে তবে require চিত্রের মতো অন্যান্য স্টাফ ব্যবহারের ক্ষেত্রে এটি সমস্যার কারণ হয় । মূলত, এটি আপনাকে requireকোনও কিছুর জন্য ব্যবহার করার অনুমতি দেয় না ।
ধ্রুবদত্ত যাদব

4
এই সমাধানটি আর সর্বশেষ টিএস নিয়ে কাজ করে না। 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.
ফ্ল্যাভরস্কেপ

4
কিছু উল্লেখ করার মতো বিষয়: আপনার উত্সের অবস্থানের উপর নির্ভর করে আপনাকে আপনার "" / টাইপস "যুক্ত করতে হবে" অ্যারে অন্তর্ভুক্ত "
নেটপোটিটিকা

4
আমার সমস্যা আছে react-countdown-clock, @typesফোল্ডার তৈরি হয়েছে এবং উপরের সমস্ত পদক্ষেপগুলি করেছি। এখনও একই ত্রুটি পেয়ে.
জ্যোথু

44

রিঅ্যাক্ট-রিডেক্স প্রকারের ক্ষেত্রে আমার একই সমস্যা ছিল। সহজ সমাধানটি 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"]
}

এই কাজ করে মহান IntelliJআইডিই কিন্তু কাস্টম typeRootsপদ্ধতি (যা গৃহীত উত্তর) এমনকি কাজ করেনি VS Codeআইডিই
শীর্ষ-মাস্টার

4
আমি মনে করি এটি একটি হ্যাক, যদিও এটি সমস্যার সমাধান করেছে তবে এই সমস্যার কোনও কার্যকর এবং স্থায়ী সমাধান আছে কি?
পারদীপ জৈন

আমি মনে করি এটি এই সমস্যার সর্বোত্তম সমাধান, আমি মনে করি না যে প্রতিটি প্যাকেজ যে ত্রুটিটি ছুঁড়েছে আমি এনএমপি করা সম্ভব নয়
গিলবার্ট আর।

30

আপনি @types/<package>যে মডিউলটি ব্যবহার করছেন তার জন্য যদি কিছু না থাকে তবে আপনি // @ts-ignoreউপরের মন্তব্যটি যুক্ত করে সহজেই সমস্যাটি সমাধান করতে পারেন

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

বিকল্পভাবে আপনি নিখোঁজ @types/<package>নিম্নলিখিতগুলি তৈরি করতে পারেন :

ঘোষণা ফাইল প্রকাশনা

আমি কীভাবে অবদান রাখতে পারি তা অবশ্যই টাইপ করা হয়েছে


4
এই প্যাকেজটিতে @typesএখনও বিটিডাব্লু নেই। রেপোতে
ডাবল জোশ

17

আমার ক্ষেত্রে প্রতিক্রিয়া নিয়ে আমার একটি সমস্যা ছিল, তাই আমি এটি করা শুরু করি:

npm install @types/react

এবং তারপর

npm install @types/react-dom

এটি আমার পক্ষে কাজ করেছে


এমনকি তারা ইতিমধ্যে ইনস্টল করা ছিল এমনকি শক্ত, সেই আদেশগুলি পুনরায় চালানো আমার জন্য সমস্যার সমাধান করেছে।
হারিংগার

মূলত, আপনি যখন কমান্ডগুলি পুনরায় রান করবেন তখন এটি আপনার বিদ্যমান প্যাকেজগুলি আপডেট করে। সমস্যাটি সমাধান করার কারণেই।
অনন্ত লালচন্দনি

7

আপনাকে যা করতে হবে তা হ'ল নীচের স্ক্রিপ্টটি চালানো। তারপরে, আপনি যে মডিউলটি ব্যবহার করতে চান তা সরান / পুনরায় ইনস্টল করুন।

npm install --save @types/react-redux

4
কোনও @ প্রকারের / প্রতিক্রিয়া-উপাদান হিসাবে উপস্থিত বলে মনে হচ্ছে না
রোনলগ

6

আমি react-router-domটাইপ স্ক্রিপ্ট ব্যবহার করে নতুন সিআরএ অ্যাপে যুক্ত করার পরে আমার এই সমস্যা হয়েছিল । আমি যুক্ত করার পরে @types/react-router, সমস্যাটি স্থির হয়েছিল।


এটি ইনস্টল করার পরে কী করবেন?
পারদীপ জৈন

5

আমার একই সমস্যা ছিল তবে টাইপস্ক্রিপ্টের সাথে অগত্যা সম্পর্কিত নয়, তাই আমি এই বিভিন্ন বিকল্পের সাথে কিছুটা লড়াই করেছি। আমি react-portal-tooltip,একই ধরণের ত্রুটি পেয়ে একটি নির্দিষ্ট মডিউল ব্যবহার করে একটি খুব বেসিক তৈরি-প্রতিক্রিয়া-অ্যাপ তৈরি করছি :

'বিক্রিয়া-পোর্টাল-টুলটিপ' মডিউলটির জন্য কোনও ঘোষণার ফাইল খুঁজে পাওয়া যায়নি। '/node_modules/react-portal-tooltip/lib/index.js' এর স্পষ্টতই 'কোনও' টাইপ রয়েছে। npm install @types/react-portal-tooltipএটি উপস্থিত থাকলে চেষ্টা করুন বা declare module 'react-portal-tooltip';টিএস (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'প্রয়োজনীয় ছিল। যদিও এখন মনে হচ্ছে এমনটা নয়! তবে কারওর পক্ষে সহায়তা করার ক্ষেত্রে আমি পদক্ষেপটি অন্তর্ভুক্ত করছি।

এটি আমার প্রথম স্ট্যাকওভারফ্লো উত্তর তাই আমি এখানে ছড়িয়ে ছিটিয়ে থাকা প্রক্রিয়ার জন্য ক্ষমাপ্রার্থী এবং আশা করি এটি এখনও কার্যকর ছিল! :)


4
এটি সত্যিই পরিষ্কার এবং সহজ। ধন্যবাদ. ভাল কাজগুলো করতে থাকো!
কিউব্লাস্টার

4

এছাড়াও, আপনি যে প্যাকেজটি ব্যবহার করার চেষ্টা করছেন তার নিজস্ব ধরণের ফাইল (গুলি) রয়েছে এবং এটি এটি প্যাকেজ.জসন typings বৈশিষ্ট্যে তালিকাভুক্ত করা থাকলে এই ত্রুটিটি ঠিক হয়ে যায় if

তাই ভালো:

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

আরও একটি হ্যাকি উপায় হ'ল উদাহরণস্বরূপ, বুট.এসএক্সএক্স লাইনে যুক্ত করা

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

সঙ্গে

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

ভিতরে declare_modules.d.ts

এটি কাজ করে তবে অন্যান্য সমাধানগুলি আরও ভাল আইএমও।


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';

আমি উপরেরটি করেছি (যদিও ইতিমধ্যে এনপিএম ইনস্টল করেছি) এবং এটি কার্যকর হয়েছে!


0

আমার ক্ষেত্রে সমস্যাটি ছিল যে প্রকারগুলি প্যাকেজ.জেসন ফাইলের সাথে ডিভিল্যান্ডেন্সের অধীনে যুক্ত হচ্ছিল না এটি ঠিক করার জন্য আমি npm install --save-dev @types/react-reduxনোটটি দৌড়ে গিয়েছিলাম--save-dev


0

tsconfig.json ফাইল যুক্ত করার চেষ্টা করুন: "noImplicitAny": false আমার জন্য কাজ করেছে


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.