2015-11-10 23 views
14

Gặp sự cố khi nhận được các biến đổi không đồng bộ/đang chờ hoạt động. Tôi đang thiếu gì?babel 6 async/await: Mã thông báo không mong muốn

.babelrc của tôi:

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

My package.json (snipped):

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

Output:

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

cấu hình của bạn có thể được giới hạn vào một thư mục cụ thể như 'khách hàng'. Kiểm tra các tùy chọn bao gồm cho trình tải. – jrhicks

Trả lời

12

Theo bài này, bạn cần phải có babel-polyfill

Babel 6 regeneratorRuntime is not defined with async/await

Hy vọng rằng nó sẽ giúp bạn :)

EDIT:

Nó không phải là babel-polyfill nhưng đó là người duy nhất tôi đã sử dụng.

Như Gothdo đã nói: từ khóa await phải nằm trong phạm vi chức năng. Hơn nữa, định nghĩa hàm này phải có từ khóa async.

Điều này có nghĩa là bạn không thể có từ khóa await trên phạm vi cấp cao nhất.

+0

Tôi đã yêu cầu gói babel-polyfill, nó vẫn bị lỗi – legomind

+12

Dòng 'await' của bạn có nằm trong phạm vi chức năng không? Tôi không chắc chắn nhưng có vẻ như nó không hoạt động bên ngoài một hàm được đánh dấu bằng 'async'. – Yormi

+0

@legomind nhưng nó không được liệt kê trong package.json của bạn (mà bạn đã đăng ít nhất) '" babel-polyfill ":"^6.0.16 ",' – BrunoLM

0

Bạn có thể biên dịch chúng mình sử dụng plugin transform-async-to-module-method, điều này cho phép bạn biên dịch chúng xuống bluebird đồng thói quen đòi hỏi phát ES6 (có sẵn trong node4).

Hoặc nếu bạn cần biên dịch trở lại ES5 để nó tương thích với các trình duyệt bạn có thể sử dụng transform-async-to-generator và số regenerator của facebook.

Tôi đã viết về cách thiết lập babel cấu hình của bạn ở đây http://madole.xyz/async-await-es7/

0

Sử dụng Async to generator transform.

Lắp đặt

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

Cách sử dụng

Thêm dòng sau vào tập tin .babelrc của bạn:

bộ tải
{ 
    "plugins": ["transform-async-to-generator"] 
} 
Các vấn đề liên quan