3

我正在处理一个相当复杂的需求项目;这个项目的核心是第三方视频播放器代码库,我们正在构建一个应用程序。我目前正在使用Require优化器来完成我们的生产构建过程。需要加载模块,即使它包含在构建中

优化器工作的很好,但是当我使用带有“内置”JS的应用程序时,Require会坚持通过插入额外的脚本标记来加载第三方模块。我已经通过编译的JS进行了搜索,并确认该模块包含在构建中;但它似乎并没有在运行时被识别。

这个模块是什么,需要第三方模块:

define(['models/Widget','amp_lib'], function(Widget) { 
    // Housekeeping/configuration 
    // Nothing to return here 
}) 

模块amp_lib在主配置定义:

require.config({ 
    paths: { 
     amp_lib: 'path/to/module/src' 
    } 
}); 

谁能帮助我了解如何需要确定是否一个特定的模块已经加载或没有?我一整天都在要求自己,希望能够找到这个决心的来源,但是无济于事。

+0

这是只与第三方模块?第三方模块是否返回值?另外,你确定它没有被引用到其他地方使用不同的路径?例如:'module/amp_lib'。你能分享演示吗? –

+0

恐怕我无法真正分享演示......但是,这里有一些额外的信息:该第三方模块的内容有所不同。如果我用如下内容替换内容: '(function(){return null;}());' 然后Require不重新加载模块。我认为我要做的就是将这件事呈现给第三方开发者;他们本周在我们的办公室协调这个项目。起初,我认为这与他们无关,但现在我想知道我们是否可以弄清楚他们(相当大的)代码库的哪一部分可能会导致这个问题。 – user2407075

+0

更新:我今天发现了问题。发现我们得到的第三方模块使用了一些实用程序库,其中一个符合AMD标准,因此在检测到加载程序时具有自己的define()函数。因此,在构建时,优化器仅将该库定义为模块,而不是整个代码库,这又导致模块在运行时重新加载。 获得的经验:小心填充第三方的东西到需求项目。 – user2407075

回答

0

正如上面指出:

我今天发现了这个问题。发现我们得到的第三方模块使用了一些实用程序库,其中一个符合AMD标准,因此在检测到加载程序时具有自己的define()函数。因此,在构建时,优化器仅将该库定义为模块,而不是整个代码库,这又导致模块在运行时重新加载。获得的经验:小心将第三方内容填充到Require项目中。

相关问题