Webpack:丢失成员导入时抛出错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webpack:丢失成员导入时抛出错误相关的知识,希望对你有一定的参考价值。

我有一个像这样的导入:

import { foo } from 'bar';

如果没有定义foo,有没有办法让Webpack抛出错误?

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

答案

作为Tobias K pointed out in the comments,另一个答案是不正确的。如果尝试导入不存在的模块,则配置strictModuleExceptionHandling: true不会产生编译时错误。

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

另一答案

通过使用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

以上是关于Webpack:丢失成员导入时抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 代码拆分使用 vueJs 组件中断 jest 导入

为啥@angular/core/core 没有导出成员'ɵɵFactoryDe​​claration'。构建项目时抛出错误?

ReactJs 在导入 svg 文件时抛出错误

Spark Shell 导入正常,但在引用类时抛出错误

Laravel / Lumen formRequest 在提交所有有效值时抛出错误

当我尝试运行此代码时抛出异常..(导入到 sql 数据库)