使用Webpack v4构建时(在JS文件中使用View.OnUnhandledKeyEventListener
),我看到以下警告:
babel-loader
Warning in ./src/components/Foo
"export 'ADDENDUM' was not found in '../../types'
...
中的导入为:
./src/components/Foo
../../ types :
import { ADDENDUM } from '../../types';
这不会引起构建错误,只是一个警告。但是警告是错误的,因为我正在导出import { each } from 'lodash';
export const typesDict = {
ADDENDUM: 'addendum',
};
each(typesDict, (type, typeConstant) => {
exports[typeConstant] = type;
});
(尽管是动态地),并且一切正常。
Webpack是否有办法处理这些动态导入,或至少关闭警告?我现在正在从Webpack v1升级,而v1则没有此问题(或者,如果存在,则某种程度上被隐藏了)。
还请注意:我不想使所有Webpack警告(例如via the devServer
config)保持沉默。我只想让这种警告消失。
答案 0 :(得分:0)
基于您的../../types
文件,我假设您的方法是跳过再次写入exports
对象中的组件。
代替静默警告,请尝试更简单的方法来解决此问题。由于您不想写两次相同的名称,因此请看我的示例。
不需要lodash
,不使用循环,并且导出的常量只写入一次。
../../ types :
export const ADDENDUM = 'addendum';
export const ADDENDUM2 = 'addendum2';
export const ADDENDUM3 = 'addendum3';
仅此而已,不再动态导入,不再警告。
更新:
您的代码确实有效,但是当您使用动态导出/导入时,编译器/捆绑程序会松散跟踪您的导出(在您的情况下),因为它们不检查导出对象的内容,因此您会收到警告,因为编译器(babel)在您的代码中找不到exports.ADDENDUM
,所以只有您知道它在那里,因此编译器认为您使用的是不存在的组件。
就进口而言,这是同样的故事,当require('/path/to/' + someVar + '/some.file.js')
之类的东西出现时,webpack会发出相同类型的警告,因为webpack希望从中提取出一部分,但这并不是完整的途径webpack,它找不到文件,因为它是串联的字符串(动态导入)。 (我不知道这些年来是否发生了变化,但是我敢肯定您也完全了解/知道了这一点)