2015-11-10 12 views
14

मुझे एसिंक/प्रतीक्षा करने में परेशानी हो रही है काम करने में बदलाव। मुझे क्या याद आ रही है?बेबेल 6 async/प्रतीक्षा: अप्रत्याशित टोकन

मेरे .babelrc:

{ 
    "presets": [ "es2015", "stage-0" ] 
} 

मेरे package.json (कतरना):

{ 
    "babel-core": "^6.1.2", 
    "babel-plugin-transform-runtime": "^6.1.2", 
    "babel-preset-es2015": "^6.1.2", 
    "babel-preset-stage-0": "^6.1.2" 
} 

आउटपुट:

babel src/server 
SyntaxError: src/server/index.js: Unexpected token (7:21) 
    5 | 
    6 | try { 
> 7 | let server = await server('localhost', env.NODE_PORT || 3000) 
    |     ^
    8 | console.log(`Server started on ${server.info.uri}`) 
    9 | } catch (err) { 
    10 | console.error('Error starting server: ', err) 
+2

आपका विन्यास को सीमित किया जा सकता है लोडर:

स्थापना

$ npm install babel-plugin-transform-async-to-generator 

प्रयोग

अपने .babelrc फ़ाइल में निम्न पंक्ति जोड़ें। लोडर के लिए विकल्प शामिल करें। – jrhicks

उत्तर

12

इस पोस्ट आप babel-polyfill

की आवश्यकता के अनुसार

Babel 6 regeneratorRuntime is not defined with async/await

उम्मीद है कि यह आपकी मदद कर सकते हैं :)

संपादित करें:

यह कोलाहल-polyfill होना जरूरी नहीं है, लेकिन यह केवल एक मैं प्रयोग किया जाता है।

जैसा कि गोथडो ने कहा: await कीवर्ड को फ़ंक्शन स्कोप में होना चाहिए। इसके अलावा, इस फ़ंक्शन परिभाषा में async कीवर्ड होना चाहिए।

इसका मतलब है कि आपके पास शीर्ष-स्तरीय दायरे पर await कीवर्ड नहीं हो सकता है।

+0

मुझे पहले से ही पैकेज बेबेल-पॉलीफिल की आवश्यकता है, यह अभी भी – legomind

+12

त्रुटियों को एक फ़ंक्शन स्कोप में आपकी 'प्रतीक्षा' पंक्ति है? मुझे यकीन नहीं है लेकिन ऐसा लगता है कि यह 'async' के साथ चिह्नित फ़ंक्शन के बाहर काम नहीं कर रहा है। – Yormi

+0

@legomind लेकिन यह आपके पैकेज.जेसन में सूचीबद्ध नहीं है (जिसे आपने कम से कम पोस्ट किया है) '"बेबेल-पॉलीफिल": "^ 6.0.16", ' – BrunoLM

3

लग रहा है async की तरह/इंतजार में ही उपलब्ध है babel-preset-stage-3

http://babeljs.io/docs/plugins/preset-stage-3/

+11

क्षमा करें, लेकिन [चरण -0] नहीं है (http://babeljs.io/docs/plugins/preset-stage-0/) चरण में होना चाहिए -3? – Colliot

0

आप उन्हें अपने आप को transform-async-to-module-method प्लगइन का उपयोग कर संकलन कर सकते हैं, यह आप Bluebird सह दिनचर्या जो ES6 जनरेटर की आवश्यकता है के लिए उन्हें नीचे संकलित करने के लिए अनुमति देता है (नोड 4 में उपलब्ध)।

या यदि आपको इसे ES5 पर संकलित करने की आवश्यकता है तो यह ब्राउज़र के लिए संगत है, आप transform-async-to-generator और फेसबुक के regenerator का उपयोग कर सकते हैं।

मैं कैसे अपने कोलाहल config यहाँ http://madole.xyz/async-await-es7/

0

उपयोग Async to generator transform स्थापित करने के लिए के बारे में लिखा है। 'ग्राहक' की तरह एक विशिष्ट फ़ोल्डर में

{ 
    "plugins": ["transform-async-to-generator"] 
} 
संबंधित मुद्दे