我遇到一种情况,其中未遵守在require.js的配置中设置的路径,而关于为什么不这样做,我有两个猜测。我在我的require config的路径中设置了以下条目:

"initVars": "../initVars"


然后在模块中,我可以成功地将其简单地称为"initVars"

但是,我也试图直接在脚本标签src's的require.js(当然在'data-main'属性中指定配置文件)下方的HTML中的脚本块中引用以上内容:

//require(['initVars'], function(VARS) { // *doesn't work*
require(['../initVars'], function(VARS) {
    VARS.init({
        ENV: "${env}"; //"Play" framework "template" variable
    });
});


因此,关于在这种特殊情况下为什么我必须指定完整路径的两个猜测如下,但我希望有人可以肯定地告诉我:


相对路径在“ require()”的调用中不被接受,而仅在“ define()”的调用中被接受
当直接在HTML中而不是从src的脚本文件中调用“ require()”时,相对路径不被接受

最佳答案

请参阅文档中的data-main Entry Point部分:


  注意:为您的数据主模块生成的脚本标签require.js包含async属性。这意味着您不能假定数据主脚本的加载和执行将在同一页面稍后引用的其他脚本之前完成。


以及在将上述内容添加到API文档之前编写的这个较早的答案:

Require.js bug random Failed to load resource

关于javascript - 为什么不遵守require.js配置中设置的路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18273898/

10-14 18:30