2016-08-14 30 views
5

Tôi hiện đang sử dụng Babel.Xử lý lỗi nhập ES6

tôi đã làm như sau trước với require:

try { 
    var myModule = require('my-module'); 
} catch (err) { 
    // send error to log file 
} 

Tuy nhiên khi cố gắng làm điều này với import:

try { 
    import myModule from 'my-module'; 
} catch (err) { 
    // send error to log file 
} 

tôi nhận được lỗi:

'import' and 'export' may only appear at the top level

Bây giờ tôi hiểu rằng import khác với require. Từ đọc Are ES6 module imports hoisted?import tời nâng có nghĩa là các lần nhập được tải trước khi thực thi mã.

Điều tôi đã làm trước đó là nếu bất kỳ yêu cầu nào không thành công, nhật ký đã được tạo để thông báo cho tôi qua email (gửi nhật ký để đăng nhập, v.v.). Vì vậy, câu hỏi của tôi tóm tắt những điều sau đây.

Làm cách nào để xử lý lỗi nhập trong thời trang thực hành tốt trong nútj? Có một điều như vậy tồn tại?

+0

Bạn đã sử dụng Babel chưa? – Tugrul

+0

@Tugrul Ah vâng, tôi nên đề cập đến điều này. –

+0

Tôi không có câu hỏi bây giờ :) – Tugrul

Trả lời

2

Cuộc trò chuyện này cho phép: https://github.com/ModuleLoader/es-module-loader/issues/280 và đồng ý với những gì bạn đã nói.

import only works at the base level. They are static and always load before the module is run.

Vì vậy, bạn không thể thực hiện kiểm tra mã.

Nhưng, tin tốt là vì nó tĩnh, nó có thể được phân tích, các công cụ như lỗi webpack ném vào thời gian xây dựng.