2017-08-26 15 views
5

Tôi đang biên soạn các tệp javascript của tôi với kết hợp Laravel và vì tôi chưa hiểu nhiều về Babel và package.json, tôi muốn hỏi liệu Laravel Mix có hỗ trợ ES8, đặc biệt là async/await không?Laravel Mix có hỗ trợ ES8 không?

Nếu tôi thử, tôi không thể biết Mix có đang chuyển đổi async/await sang ES5 hay không nếu async/await được trình duyệt của tôi hỗ trợ, đây là phiên bản mới nhất. Tôi vẫn muốn nó được chuyển sang ES2015 vì vậy ứng dụng sẽ vẫn hoạt động trên các trình duyệt chỉ hỗ trợ ES5.

+2

Laravel Mix sử dụng babel dưới mui xe, nếu các plugin chính xác được thêm vào babel, cú pháp không đồng bộ/chờ đợi được hỗ trợ. Tôi hiện đang điều tra làm thế nào để làm điều này, tôi sẽ cho bạn biết. – Cobolt

+2

@Cobolt tuyệt vời, mọi trợ giúp sẽ được đánh giá cao. Vui mừng khi biết cuộc điều tra của bạn diễn ra như thế nào, tôi bị bối rối vì tôi không biết bắt đầu từ đâu, tôi đã google rất nhiều nhưng vô ích. – jcsoriano

Trả lời

11

async/chờ đợi với Laravel Mix:

Nếu bạn sử dụng Laravel Mix của Box và sử dụng async và đang chờ đón bạn nhận được thông báo lỗi sau:

Uncaught ReferenceError: regeneratorRuntime is not defined

Nhưng Laravel Mix sử dụng Babel để hỗ trợ ES2015. Chúng tôi có thể tùy chỉnh trình biên dịch nếu cần.

Để có được async/chờ đợi làm việc, thêm các tập tin .babelrc vào thư mục gốc của bạn với nội dung này:

{ 
    "presets": ["es2015", "stage-3"], 
    "plugins": [ 
    "transform-runtime" 
    ] 
} 

Và cài đặt các gói NPM cần thiết:

npm install babel-preset-es2015 babel-preset-stage-3 babel-plugin-transform-runtime --save-dev 

Điều quan trọng (trong đó gây ra lỗi) là plugin chuyển đổi thời gian chạy. Nó không được đóng gói với Laravel Mix, nhưng bạn cần nó để có được tính năng async/await hoạt động.

ES8:

Như bạn đã thấy ở trên, bạn có thể sử dụng các giai đoạn khác nhau trong cài sẵn Babel. Với chúng, bạn có thể sử dụng các tính năng được bao gồm trong ES8 hoặc mới hơn. Ví dụ: stage-3 mang đến tính năng không đồng bộ/đang chờ.

Họ có một số overview of the stages trên trang web của họ.

+3

Đó là .babelrc và không .bashrc, phải không? – MartinSuecia

+0

@MartinSuecia Bạn nói đúng. Sửa lỗi. –

+3

Tại sao câu trả lời này không có hàng trăm upvotes? Damn rực rỡ, bạn đã tiết kiệm cho tôi giờ, công việc tuyệt vời! – Mjh