2016-02-11 17 views
9

Về việc sử dụng xuất nhập khẩu tại ES6, tôi nhận được dưới đây lỗi:ES2015 mô-đun nhập khẩu và xuất khẩu cú pháp lỗi

SyntaxError: export declarations may only appear at top level

Tôi lướt để tìm cách khắc phục điều này, nhưng im không thể. Ai có thể giải thích về điều này. Im mới cho ES6, đặc biệt là nhập và xuất. (Tôi đã sử dụng StealJS hoàn toàn cho loại chất liệu này) Cảm ơn!

js file là:

app.js

import { cube, cubeRoot } from 'functions'; 

console.log(cube(4)); 
console.log(cubeRoot(125)); 

functions.js

// functions.js 

function cube(a) { 
    return a * a * a; 
} 

function cubeRoot(a) { 
    return Math.cbrt(a); 
} 

export { cube, cubeRoot} 
+3

Có phải 'chức năng' là tệp hay mô-đun không? Có lẽ bạn cần 'import {...} từ './Functions''? –

+0

Bạn có chắc chắn rằng bạn không có một số dấu ngoặc mở chưa từng có chưa? Đây có phải là mã chính xác của bạn không? Bạn có thể chỉ cho chúng tôi thiết lập chính xác và cách bạn đang quảng cáo điều này không? – Bergi

+0

Đây có phải là toàn bộ thông báo lỗi không? Có bất kỳ số dòng hoặc như vậy? – Bergi

Trả lời

5

Cập nhật mùa hè 2017:

Xem http://caniuse.com/#search=modules, hỗ trợ mới, có lẽ cần phải thay đổi cài đặt.

Bây giờ mọi thứ ít mơ hồ hơn. Để thực hiện công việc mô-đun, bạn phải cho trình duyệt biết rằng đó là mô-đun (tập lệnh khác). Cách đầu tiên là ngầm định, một mô-đun được nhập luôn là một mô-đun. Cách thứ hai là với kiểu mô-đun <script src="anymodule.js" type="module"></script>

Hãy chắc chắn rằng nhập khẩu và xuất khẩu chỉ ở trên mức, không phải bên trong một khối, không phải bên trong một câu lệnh if, không phải bên trong một vòng lặp vv

Ngoài ra hãy chắc chắn đến cung cấp đường dẫn đầy đủ (bao gồm .js), nó phải bắt đầu bằng ./ hoặc ../. Giả sử các tệp nằm trong cùng một thư mục, nó sẽ là import { cube, cubeRoot } from './functions.js';

eval trên chuỗi mô-đun sẽ không hoạt động.

câu trả lời lỗi thời dưới đây:

Module ES2015 nhập khẩu và xuất khẩu cú pháp không được hỗ trợ bởi bất kỳ trình duyệt tại thời điểm tôi viết câu trả lời này (04/2016). Các thông báo lỗi là bỏ lỡ hàng đầu bởi vì nó ngụ ý rằng cú pháp được hỗ trợ, nhưng nó không được hỗ trợ ở tất cả. Xem ghi chú đầu tiên ở đây https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

Lý do là do đặc điểm kỹ thuật cho trình tải mô-đun vẫn đang trong quá trình thực hiện. Xem https://whatwg.github.io/loader/#status

Tuy nhiên, chúng là các công cụ để chèn hoặc tự động chuyển cú pháp cú pháp này như babel.

+0

Tính năng mô-đun bị thiếu trong trình duyệt sẽ không gây ra thông báo lỗi mà OP báo cáo. –

+0

lỗi là bỏ lỡ hàng đầu thực sự –

+2

Tôi nói rằng nếu một trình duyệt không hỗ trợ các mô-đun, nó sẽ không tạo ra thông điệp đó cả. Nó sẽ tạo một thông báo như 'nhập mã thông báo không mong muốn'. Do đó, vấn đề của OP nằm ở nơi khác. –

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