2016-11-11 56 views
15

我有一个导入这样的事情:的WebPack:一次性错误上缺少的成员进口

import { foo } from 'bar'; 

是否有一种方式来获得的WebPack抛出一个错误,如果没有定义foo

请注意,如果这有所作为,我正在使用Babel。

+0

Webpack是纯javascript。如果(!foo)抛出新的错误('someError'); – Hosar

+1

我的意思是自动的。我遇到过拼错'foo'的情况,并且花了我一些时间才意识到问题所在。看作为webpack必须“导入”它,我假设它会知道它是否被定义或不? – joshhunt

+0

我也想这样。不知道这是否相关:https://github.com/webpack/webpack/issues/1729 – maxedison

回答

4

由于Tobias K pointed out in the comments,邻其答案不正确。如果您尝试导入不存在的模块,则配置strictModuleExceptionHandling: true不会产生编译时错误。

正确的配置是strictExportPresence: true,它只在webpack v2.3.0及更高版本中可用。 (早期版本只能显示警告,而不是错误。)

2

可以通过使用output.strictModuleExceptionHandling配置webpack 2在导入失败时抛出错误。该功能是通过此请求https://github.com/webpack/webpack/pull/3302添加的,但尚未记录。以下是如何使用它:

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

现在,如果我尝试从不到风度存在的文件导入,或我做解析为undefined我会得到错误和警告消息中的WebPack控制台输入:

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. 

在Chrome控制台,你会得到这样的警告:

warning message in chrome

+0

不适合我。我仍然在'./a.js 2:0-1'中警告''在'./b''(webpack 2.2.1)中找不到export'c'。 – Pavlo

+0

配置启用了警告消息 - 您仍然需要自己修复导入 – TimRich

+0

不是这样的,不管是否有'strictModuleExceptionHandling'选项,警告信息都是存在的 – Pavlo