2015-05-20 18 views
40

này hoạt động:Nhập module sử dụng ES6 cú pháp và đường dẫn động

import app from './../app.js'; 

Nhưng điều này không:

import app from path.join(process.cwd(), 'app'); 

Tôi Bắt:

SyntaxError: /path/file.js: Unexpected token (5:16) 
> 5 | import app from path.join(process.cwd(), 'app'); 
    |    ^

Có thể (và/hoặc cách) để sử dụng đường dẫn "động"? (không mã hóa đường dẫn hoặc dựa vào đường dẫn tương đối).

+0

Và có, đường dẫn được nhập trước ứng dụng. –

Trả lời

44

Không, điều này là không thể. Các mô-đun ES6 cần có khả năng giải quyết tĩnh các phụ thuộc của chúng, mà không cần thực hiện mã mô-đun, sao cho các câu lệnh import hoạt động đáng tin cậy. Trình chỉ định mô-đun phải là chuỗi ký tự.

Tuy nhiên, trình tải mô-đun mà bạn chọn sẽ hỗ trợ tải động mô-đun có tên biến. Tuy nhiên, bạn sẽ không thể nhận được số nhận dạng app bị ràng buộc trong phạm vi mô-đun của mình (và không thể xác định lại nó), thông thường nó sẽ chỉ khả dụng trong cuộc gọi lại.

10

Nhập khẩu ES6 là khai báo và có nghĩa là để phân tích tĩnh. Chúng không thể năng động.

Nói chung kỳ vọng sẽ là nếu bạn có một số nhập khẩu có điều kiện, đó sẽ là trách nhiệm của logic phân giải đường dẫn cơ bản để quyết định mô-đun nào tải dựa trên một số đường dẫn tĩnh.

Điều đó hoặc bạn sẽ sử dụng trình tải mô-đun không đồng bộ thay vì nhập khẩu khai báo.

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