2016-04-05 24 views
7

मुझे ऐसे व्यवहार का सामना करना पड़ रहा है जिसे मैं समझा नहीं सकता। import या require का उपयोग करने के आधार पर, यह परीक्षण सफलताएं (import) या विफल रहता है (require)।'आवश्यकता' कैसे 'आयात' es6 से अलग-अलग काम करता है?

के मामले में विफल रहते हैं, मेरे पास है निम्न त्रुटि:

import { Map, List } from 'immutable'; 
const expect = require("expect"); 
// import expectImmutable from "expect-immutable"; 
const expectImmutable = require("expect-immutable"); 

expect.extend(expectImmutable); 

describe("immutability",() => { 
    describe("a number",() => { 
     function increment(currentState) { 
      return currentState + 1; 
     } 
     it("is immutable",() => { 
      expect(List([1])).toEqualImmutable(List([1])); 
      expect(Map({ a: 1 })).toEqualImmutable(Map({ a: 1 })); 
      let state = 42; 
      let nextState = increment(state); 

      expect(List([nextState])).toEqualImmutable(List([43])); 
      expect(List([state])).toEqualImmutable(List([42])); 
     }); 
    }); 
}); 

किसी को क्या दृश्य के पीछे क्या हो रहा है की एक विवरण है:

PhantomJS 2.1.1 (Windows 7 0.0.0) immutability a number is immutable FAILED undefined is not a constructor (evaluating 'expect((0, _immutable.List)([1])).toEqualImmutable((0, _immutable.List)([1]))')

यहाँ कोड है?

+3

तुम वैसे भी यह transpiling रहे हैं जैसे ही - तुम क्यों 'require' साथ कोड के बीच अंतर की जांच नहीं करते और transpiled' import' (जो 'require' रूप में अच्छी तरह हो जाएगा)? – zerkms

+2

आप संभवतः उस ऑब्जेक्ट में डिफ़ॉल्ट प्रॉपर्टी की तलाश कर रहे हैं जिसकी आपको आवश्यकता है, 'आवश्यकता ("उम्मीद") का प्रयास करें। डिफ़ॉल्ट' और 'आवश्यकता ("अपेक्षित-अपरिवर्तनीय")। डिफ़ॉल्ट' – maioman

उत्तर

1

धन्यवाद @zerkms और @maioman आपकी सलाह ने वास्तव में मदद की है। आप सही @ माईमन थे, यह पुस्तकालय द्वारा उपयोग किए जाने वाले निर्यात वाक्यविन्यास के कारण था।

ES6:

export default foo; 

आवश्यकता होती है:

module.exports = foo; 

तो जब एक ES6 लिखा निर्यात की आवश्यकता होती है करने के लिए आवश्यक है, हम डिफ़ॉल्ट कीवर्ड संभाल चाहिए।

require("foo").default; 
संबंधित मुद्दे