2015-10-15 15 views
9

Tôi đã điều sau đây trong một kịch bản Node:xuất khẩu ES6 lớp trong Node 4.x bất ngờ từ dành riêng

"use strict"; 

class Whatever { 
    constructor() { 
     console.log("I'm in the constructor!"); 
    } 
} 

export default Whatever; 

tôi nhận được Unexpected reserved word về export.

Tôi thiếu gì ở đây? Làm thế nào để bạn xác định một định nghĩa lớp trong một tập tin bên ngoài và bao gồm/yêu cầu nó?

+2

Tôi không nghĩ ES6 module được hỗ trợ trong Node theo mặc định, bạn có đang chạy này với '--harmony', '--harmony_modules' cờ vv? – adeneo

Trả lời

7

Node.js không hỗ trợ mô-đun ES6 theo mặc định. Bạn cần phải kích hoạt chúng với cờ --harmony hoặc --harmony_modules. Mặc định ist khai báo CommonJS (require/module.exports).

Sửa đổi mã của bạn để hỗ trợ các cú pháp CommonJS:

"use strict"; 

class Whatever { 
    constructor() { 
     console.log("I'm in the constructor!"); 
    } 
} 

module.exports = Whatever; 
+0

Như tôi đã nói trong câu hỏi, tôi đang sử dụng nút 4. Cảm ơn –

+0

Ah, xin lỗi :) Bỏ qua phần đó rồi. Sẽ cập nhật câu trả lời của tôi. – morkro

+0

Cảm ơn tôi đã thấy nó hỗ trợ các lớp ES6 và chỉ cho rằng đó là cách thích hợp để xuất các lớp. Đã không nhận ra bạn có thể sử dụng cú pháp CommonJS cũ cho các lớp học vẫn còn. Cảm ơn –

2

Mô-đun ES6 chưa ổn định trong Nút, nhưng bạn có thể sử dụng --harmony_modules để bật chúng. Điều này rõ ràng là không được khuyến cáo trong một môi trường sản xuất.

ES6 support in Node 4.x

Các vấn đề liên quan