我有一个基于 AMD 的项目。当我使用 webpack 构建它时,webpack 开始加载模块,并最终由于某种原因通过通配符/glob 递归加载。我正在努力阻止这种情况发生。
例如 webpack 的输出
[0] ./fixme.js 1.9 kB {0} [built]
[1] ./host/CaptureContext.js 21.1 kB {1} [built] [1 error]
[2] ./shared/Settings.js 1.2 kB {1} [built]
[3] ./shared/Extensions.js 1.87 kB {1} [built]
[4] ./shared/EventSource.js 1.61 kB {1} [built]
[5] ./shared/Hacks.js 215 bytes {1} [built]
[6] ./shared/Info.js 122 kB {1} [built]
[7] ./shared/Utilities.js 8.47 kB {1} [built]
[8] ./shared/Base.js 2.38 kB {1} [built]
[9] ./host/Frame.js 16.1 kB {1} [built]
[10] ./host/StateSnapshot.js 13.1 kB {1} [built]
[11] ./host/Notifier.js 1.34 kB {1} [built]
[12] ./host/ResourceCache.js 7.36 kB {1} [built] [1 error]
[13] ./host/resources/Program.js 10.3 kB {1} [built]
[14] ./host/Resource.js 5.43 kB {1} [built]
[15] ./host/ResourceVersion.js 1.75 kB {1} [built]
[16] ./host/resources/Buffer.js 11.7 kB {1} [built]
[17] ./host/resources/Framebuffer.js 4.53 kB {1} [built]
[18] ./host/resources/Renderbuffer.js 2.88 kB {1} [built]
[19] ./host/resources/Shader.js 2.97 kB {1} [built]
[20] ./host/resources/Texture.js 29.5 kB {1} [built]
[21] ./shared/GLConsts.js 31.7 kB {1} [built]
[22] ./host/resources/VertexArrayObject.js 9.38 kB {1} [built]
[23] ./host/resources/VertexArrayObjectOES.js 2.12 kB {1} [built]
[24] ./host/Statistics.js 4.16 kB {1} [built]
[25] ./host/HostUI.js 10.1 kB {1} [built]
[26] ./CSSLoader.js 2.33 kB {1} [built]
[27] . ^\.\/.*$ 128 kB {1} [built] [761 warnings]
[28] ./buildextensions.sh 0 bytes [optional] [built] [failed]
[29] ./dependencies/require.js 86.6 kB {1} [optional] [built]
[30] ./dependencies/reset-context.css 0 bytes [optional] [built] [failed]
[31] ./dependencies/stacktrace.js 14.8 kB {1} [optional] [built]
[32] ./dependencies/syntaxhighlighter_3.0.83/LGPL-LICENSE 0 bytes [optional] [built] [failed]
[33] ./dependencies/syntaxhighlighter_3.0.83/MIT-LICENSE 0 bytes [optional] [built] [failed]
[34] ./dependencies/syntaxhighlighter_3.0.83/shBrushGLSL.js 2.91 kB {1} [optional] [built]
第 27 行
[27] . ^\.\/.*$ 128 kB {1} [built] [761 warnings]
是什么原因造成的?我没有任何通过通配符/全局加载模块的引用。该程序在没有 webpack 的情况下运行良好,仅使用 require.js 和普通 AMD。
./fixme.js
看起来像这样
require([
'./host/CaptureContext',
'./host/HostUI',
'./CSSLoader',
], function(
captureContext,
HostUI,
cssLoader) {
});
如果我注释掉第二两行,如
require([
'./host/CaptureContext',
// './host/HostUI',
// './CSSLoader',
], function(
captureContext,
HostUI,
cssLoader) {
});
那么 webpack 仅包含大约 24 个模块,并且不会疯狂地尝试递归包含整个树。
当然,我会开始从模块中删除一些内容,以尝试缩小问题范围,但我的第一次尝试没有任何运气,所以我正在寻找导致此问题的原因
最佳答案
问题显然是其中一个文件中有此内容。
var url = require.toUrl(filename);
Webpack 看到该行并显然假设所有文件都是需要的。注释掉该行修复就是问题所在。
关于javascript - 什么会导致 webpack 递归地包含每个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489793/