2016-11-11 39 views
15

Tôi có một cái gì đó nhập khẩu như thế này:Webpack: Ném lỗi trên thiếu thành viên nhập khẩu

import { foo } from 'bar'; 

Có cách nào để có được Webpack để ném ra một lỗi nếu foo không được định nghĩa?

Lưu ý rằng tôi đang sử dụng Babel nếu điều đó tạo nên sự khác biệt.

+0

Webpack là javascript đơn giản. nếu (! foo) ném Lỗi mới ('someError'); – Hosar

+1

Tôi có ý nghĩa tự động hơn. Tôi đã có những trường hợp mà tôi đã đánh vần sai 'foo' và tôi phải mất một lúc để nhận ra vấn đề là gì. Thấy như webpack có "nhập khẩu" nó tôi giả sử nó sẽ biết nếu nó được xác định hay không? – joshhunt

+0

Tôi cũng muốn điều này. Không chắc chắn nếu điều này là có liên quan: https://github.com/webpack/webpack/issues/1729 – maxedison

Trả lời

4

như Tobias K pointed out in the comments, o câu trả lời là không chính xác. Cấu hình strictModuleExceptionHandling: true sẽ không tạo ra lỗi thời gian biên dịch nếu bạn cố gắng nhập một mô-đun không tồn tại.

Cấu hình chính xác là strictExportPresence: true, chỉ khả dụng trong webpack v2.3.0 trở lên. (Các phiên bản trước đó chỉ có thể hiển thị cảnh báo chứ không phải lỗi.)

2

Có thể định cấu hình webpack 2 để ném lỗi khi nhập không thành công bằng cách sử dụng output.strictModuleExceptionHandling. Chức năng này đã được thêm vào bởi yêu cầu kéo này https://github.com/webpack/webpack/pull/3302 nhưng nó chưa được ghi lại. Dưới đây là làm thế nào để sử dụng nó:

module.exports = { 
    entry: { 
     main: "./main.js", 
    }, 
    output: { 
     filename: "[name].bundle.js", 
     strictModuleExceptionHandling: true 
    } 
} 

Bây giờ nếu tôi cố gắng nhập khẩu từ một tập tin mà Dosn't tồn tại, hoặc tôi thực hiện một khẩu mà giải quyết để undefined tôi sẽ nhận được lỗi cùng các cảnh báo trong webpack console:

WARNING in ./js/pedigree.js 
32:35-49 "export 'default' (imported as 'DisorderLegend') was not found in './disorderLegend' 

ERROR in ./js/pedigree.js 
Module not found: Error: Can't resolve './OkCancelDialogue' in '/home/tim/workspace/projects/public/js/ext-lib/panogram/js' 
@ ./js/pedigree.js 5:0-54 
@ ./js/viewerPedigree.js 
@ ./main.js 
@ multi (webpack)-dev-server/client?http://localhost:8080 ./main.js 
webpack: Failed to compile. 

Trong chrome console bạn sẽ nhận được một cảnh báo như thế này:

warning message in chrome

+0

Không làm việc cho tôi. Tôi vẫn nhận được 'CẢNH BÁO trong ./a.js 2: 0-1" xuất khẩu 'c' không được tìm thấy trong './B'' (webpack 2.2.1). – Pavlo

+0

Cấu hình đang bật thông báo cảnh báo - bạn vẫn phải tự sửa lỗi nhập khẩu – TimRich

+0

Không phải thông báo cảnh báo có bất kể tùy chọn 'strictModuleExceptionHandling'. – Pavlo

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