2016-04-07 12 views
20

मैं ES6 और Babel के साथ एक साइट बना रहा हूं।ES6 `fetch अपरिभाषित है

एक स्क्रिप्ट फ़ाइल में, मुझे सर्वर पर किसी सेवा के लिए AJAX कॉल करने की आवश्यकता है। उसके लिए मैं इस तरह कर रहा हूँ:

fetch('url').then(
    response => response.json() 
).then(
    supervisoryItems => doSomething(supervisoryItems) 
) 

गूगल क्रोम में यह सिर्फ ठीक काम करता है, लेकिन यह Firefox या IE (मैं त्रुटि fetch is undefined हो रही है) पर काम नहीं करता। इस गूगल पर सर्च कर रहे हैं मैंने पाया इसे ठीक करना चाहिए:

import promise from 'es6-promise' 
promise.polyfill() 

दुर्भाग्य से यह कुछ भी नहीं बदलता है, मैं एक ही समस्या है। कोई मदद?

उत्तर

39

आपको 'isomorphic-fetch' मॉड्यूल को अपने 'package.json' में जोड़ने की आवश्यकता है और फिर इसे आयात करें।

npm install --save isomorphic-fetch es6-promise 
अपने कोड में

फिर

import "isomorphic-fetch" 

https://www.npmjs.com/package/isomorphic-fetch

+0

जानने के कुछ अन्य कार्यान्वयन भी है, लेकिन मैं इस एक के अच्छे सुनते हैं। – mpen

+2

बीटीडब्ल्यू, 'आयात' कथन केस-संवेदी है। (एक char संपादित नहीं कर सकता।) –

+0

उपरोक्त आदेश पर चलकर, अन्य पैकेज (पूर्व के लिए एक्सप्रेस मॉड्यूल) हटा दिए गए –

0

बस इस कल रात माध्यम से चला गया देखें। अंत में, चीजों के सभी प्रकार के प्रयास करने के बाद, समाधान काफी सरल था:

fetch('url').then(
response => response.json() 
).then(
supervisoryItem => doSomething(supervisoryItem) 
) 

बन

window.fetch('url').then(
response => response.json() 
).then(
supervisoryItem => doSomething(supervisoryItem) 
) 

टी एल; डॉ लाने (सामान) खिड़की .fetch होना चाहिए (सामान) EDIT यह क्रोम

+2

निर्भर करता है। यदि ब्राउज़र इसे मूल रूप से कार्यान्वित नहीं करता है तो आपको अभी भी एक कार्यान्वयन जोड़ने की आवश्यकता है। –

1

बेबेल-पॉलीफिल (http://babeljs.io/#polyfill) में मेरे लिए काम करता है, वर्तमान में पॉलीफिल में लाने में शामिल नहीं है। मैं हालांकि इसे जोड़ने की सोच रहा था।

लेकिन हाँ उपयोग कर सकते हैं https://github.com/github/fetch

2

मैं इस तरह दो निम्न DNS का उपयोग करेगा:

<script src="//cdn.jsdelivr.net/bluebird/3.5.0/bluebird.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/2.0.3/fetch.js"></script>