জেএসএক্স ফাইল দেওয়ার সময় ত্রুটির প্রতিক্রিয়া জানায় "অপরিজ্ঞাতকৃত সম্পত্তি 'ক্রিয়েটমেন্ট' পড়া যায় না"


107

আমার কাছে একটি ফাইল টেস্ট_স্টফ.জে রয়েছে যা আমি চালাচ্ছি npm test

এটি দেখতে বেশ সুন্দর দেখাচ্ছে:

import { assert } from 'assert';
import { MyProvider } from '../src/index';
import { React } from 'react';

const myProvider = (
  <MyProvider>
  </MyProvider>
);

describe('Array', function() {
  describe('#indexOf()', function() {
    it('should return -1 when the value is not present', function() {
      assert.equal(-1, [1,2,3].indexOf(4));
    });
  });
});

দুর্ভাগ্যক্রমে, আমি ত্রুটি পেয়েছি

/Users/me/projects/myproj/test/test_stuff.js:11
var myProvider = _react.React.createElement(_index.MyProvider, null);
                             ^

TypeError: Cannot read property 'createElement' of undefined
    at Object.<anonymous> (/Users/me/projects/myproj/test/test_stuff.js:7:7)

ওটার মানে কি? আমি 'প্রতিক্রিয়া' সাফল্যের সাথে প্রতিক্রিয়া আমদানি করছি, তাহলে কেন প্রতিক্রিয়াটি অপরিজ্ঞাত হবে? এটি _ সত্যই। প্রতিক্রিয়া, এর অর্থ যাই হোক না কেন ...

উত্তর:


211

প্রতিক্রিয়া আমদানি করতে import React from 'react'আপনি যখন বন্ধনী যুক্ত করেন তখন আপনি যে জিনিসটি আমদানি করছেন সেটি সেই মডিউল বা ফাইলের ডিফল্ট রফতানি নয়। প্রতিক্রিয়া ক্ষেত্রে, এটি ডিফল্ট রফতানি।

আপনি কীভাবে তাদের সংজ্ঞা দিয়েছেন তার উপর নির্ভর করে এটি আপনার অন্যান্য আমদানিতে প্রযোজ্য।


19
আমি এখনও নিশ্চিত না কেন তবে আমার জন্য এটি ছিলimport * as React from "react"
ক্লিন্টম

8
প্রযুক্তিগতভাবে বলতে গেলে, import React from 'react'বৈধ নয় যেহেতু প্রতিক্রিয়া ডিফল্ট রফতানি নয় তবে এটি বাবেলের সাথে মিলে ES6 ব্যবহারের কারণে কাজ করে। হতে পারে আপনার বাবেল কনফিগারেশনটি আপনাকে আলাদাভাবে সঠিক বৈধ বাক্য গঠন ব্যবহার করতে বাধ্য করছে import * as React from 'react'। আরও তথ্যের জন্য: github.com/DefinitelyTyped/DefinitelyTyped/issues/5128
Kafo

আরেকটি গুরুত্বপূর্ণ বিষয় যা আমি উল্লেখ করতে ভুলে গিয়েছিলাম তা হ'ল জেএসএক্সের কাজের সুযোগে প্রতিক্রিয়া হওয়া দরকার। তবে, আপনাকে অবশ্যই কম্পোনেন্ট এবং অন্যান্য নামযুক্ত রফতানি ছাড়া প্রতিক্রিয়া করতে হবে না। ভবিষ্যতে হয়ত আপনি প্রতিক্রিয়া আমদানি করবেন না।
কাফো

4
আমি এক্সপোতে প্রতিক্রিয়া-স্থানীয় ব্যবহার করছি এবং আমার babel-preset-expo বাবেল
প্রিসেটটি

4
টাইপস্ক্রিপ্ট ব্যবহার করা হলে, আমদানি শৈলী esModuleInteropটিএসকনফিগের সেটিং দ্বারাও প্রভাবিত হবে । Tsconfig অবশ্যই পরীক্ষার ফাইলগুলিতে প্রয়োগ করতে হবে (চেক includeএবং files)।
ম্যাথিয়াস

38
import React, { Component } from 'react'

এটি আমার পক্ষে কাজ করেছে। যদিও আমি নিশ্চিত না কেন এটি কেন এই সমস্যাটির আমার সংস্করণ স্থির করেছে। সুতরাং আপনি যদি এমন কেউ হন যে এই সমস্যাটিকে হোঁচট খাচ্ছেন এবং আপনি আপনার প্রারম্ভিক বয়লারপ্লেট হিসাবে ক্রিয়েট-রিঅ্যাক্ট-অ্যাপ ব্যবহার করেন, প্রতিক্রিয়াটি আমদানির এই পদ্ধতিটি কৌশলটি কার্যকর করবে। (অক্টোবর '18, LOL হিসাবে)


প্রতিক্রিয়া ছাড়াও মেমো, ইউজএফেক্ট, ইউজস্টেট আমদানি করার চেষ্টা করার সময় আমার এই সমস্যাটি ছিল। মূলত ত্রুটিটি "
অপরিজ্ঞাতকৃত

এটি আমার জন্য এটিও স্থির করে (যদিও আমি কম্পোনেন্টের পরিবর্তে ইউজস্টেট আমদানি করি)। আমি এখন আমার আসল, ত্রুটিযুক্ত পার্থক্য সম্পর্কে খুব কৌতূহলী import { React, useState } from 'react';
জোসফ্যাব্রে

4
@ জোসফাব্রে এটি ত্রুটিযুক্ত ছিল কারণ প্রতি ডিফল্ট হিসাবে 'react'রফতানি হয় না é Reactতবে এটি export useState, export Componentইত্যাদি
c4k

18

যারা টাইপস্ক্রিপ্ট দিয়ে রিঅ্যাক্টজেএস কাজ করছেন তাদের জন্য।

import * as React from 'react';

4
এটা আমার সমস্যা ছিল। ধন্যবাদ!
জোসেফ ফেহরমান 17'19

4
কেন এটি প্রয়োজনীয়? রসিকতা চালানোর সময় আমি আমার কোডবেজ জুড়ে এই ত্রুটিটি পেয়েছি।
নেট গ্লেন

"আবার সুন্দর" আমদানি করার একটি উপায় রয়েছে। আপনার tsconfig.json- এ "#ModuleInterop: true" যুক্ত করুন। এবং আপনার "আমদানি প্রতিক্রিয়া থেকে 'প্রতিক্রিয়া'" উপভোগ করুন! - শুলিক ভোলাডাইমায়ার
শুলিক ভলডোমাইমার

3

অযত্নতার কারণে আমার এই ত্রুটি ঘটেছে। এটা আসলে

import React from 'react';

নামকরণ রফতানীর জন্য বন্ধনীগুলি হ'ল:

import React, { useState, useEffect } from 'react';

আপনার যদি নতুন প্রশ্ন থাকে তবে দয়া করে প্রশ্ন জিজ্ঞাসা বোতামটি ক্লিক করে এটি জিজ্ঞাসা করুন । এই প্রশ্নের লিঙ্ক অন্তর্ভুক্ত করুন যদি এটি প্রসঙ্গ সরবরাহ করতে সহায়তা করে। - পর্যালোচনা থেকে
মার্টেনগেটচার

0

পরিবর্তন: আমদানি করতে 'রিএ্যাক্ট' থেকে আমদানি করুন {প্রতিক্রিয়া import থেকে 'প্রতিক্রিয়া' থেকে প্রতিক্রিয়া জানুন কারণ প্রতিক্রিয়া একটি ডিফল্ট রফতানি এবং কোনও ডিফল্ট রফতানির জন্য আপনার কোঁকড়ানো ধনুর্বন্ধনী প্রয়োজন হয় না।


0

যদি আপনাকে 'প্রতিক্রিয়া' থেকে একাধিক ক্লাস আমদানি করা প্রয়োজন হয় তবে তাদের জন্য আপনার প্রতিক্রিয়া বাদে একটি উপাধি থাকতে পারে। কিছুটা এইরকম,

import React, * as react from 'react';

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