2017-12-04 25 views
5

Đối với một dự án cá nhân, tôi đang cố sử dụng tính năng nhập ES6 để viết mã sạch hơn. Là thử nghiệm đầu tiên, tôi đang viết một đối tượng cần tạo một menu. Toàn bộ mã đang hoạt động khi tôi trực tiếp tải lên lớp, nhưng khi sử dụng nhập và xuất trong ES6, nó sẽ xuất hiện lỗi "Uncaught SyntaxError: Unexpected identifier" trên đường dây import trong main.jsMô-đun ES6 Nhập cho "Cú pháp không bắt buộc Cú pháp: Số nhận dạng không mong muốn"

Tôi có các tập tin sau đây:

tài sản/js/menu.js

'use strict'; 

export default class Menu 
{ ... } 

tài sản/js/main.js

import Menu from "./menu.module.js"; 

window.addEventListener('DOMContentLoaded',() => { 
    const menu = new Menu(); 
} 

index.html

<script type="module" src="assets/js/menu.module.js"></script> 
<script src="assets/js/main.js"> 

Lưu ý rằng đây chỉ là những dòng có liên quan của mã.

Sử dụng đường dây <script type="module"> hoặc dường như không tạo ra bất kỳ sự khác biệt nào đối với tôi. Tôi có cả cờ chrome cho mô-đun thử nghiệm và ES6 được bật, vì không có chúng tôi nhận được lỗi về số import không được xác định.

Phiên bản Chrome sẽ là 62, do đó, theo các nguồn khác nhau (bao gồm nhật ký cập nhật của google), điều này sẽ hoạt động, ngay cả khi không có cờ.

Ai đó có thể khai sáng cho tôi biết lý do tại sao điều này không hiệu quả và những gì tôi đang làm sai?

+0

Có số dòng được liên kết không? Tệp nào bị lỗi? –

+0

@BoyWithSilverWings quên thêm điều đó, Chỉ cần thêm ngay bây giờ. Đó là trên dòng 'import' trong' main.js' – ZeroThe2nd

+2

Chẳng lẽ 'main.js' cũng cần' type = "module" '? Nó sử dụng cú pháp mô-đun, sau khi tất cả. – Bergi

Trả lời

5

Như @Bergi đã đề cập trong nhận xét, thêm type="module" vào dòng nhập main.js giải quyết được vấn đề. Tất cả hiện đang hoạt động.

Nhờ tất cả các bạn đã trả lời và cố gắng giúp đỡ.

3

Từ những gì tôi có thể thấy bạn đang cố gắng tải tệp menu.module.js trong khi thực tế tên là menu.js.

PS: Từ những gì tôi nhớ bạn cũng có thể thả số .js từ báo cáo nhập.

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