【问题标题】:Require JS not loading if not at the root path如果不在根路径,则要求 JS 不加载
【发布时间】:2014-08-23 23:36:37
【问题描述】:

我的 requirejs 设置有问题,我尝试修复它,但每次我都破坏了应用程序。这是我的index.html

<script type="text/javascript" src="/js/bower_components/requirejs/require.js"></script>
<script>
    // obtain requirejs config
    require(['require', 'js/require-config'], function (require, config) {

        // update global require config
        window.require.config(config);

        // load app
        require(['main']);
    });
</script>

如果我从根路径“/”加载应用程序,这效果很好,但是当我尝试在其他地方(即 /user/1)刷新应用程序时,我收到以下错误:

资源被解释为脚本,但使用 MIME 类型 text/html 传输:“http://domain.local/users/js/require-config.js”。

require.js:1895 Uncaught SyntaxError: Unexpected token

require-config.js:1 资源被解释为脚本,但使用 MIME 类型 text/html 传输:“http://domain.local/users/main.js”。

require.js:1895 Uncaught SyntaxError: Unexpected token

如您所见,它正在相对路径中查找文件: http://domain.local/users/js/require-config.js

但它应该加载: http://domain.local/js/require-config.js

如果我在模块前面添加/,那么它就不再工作了,因为它正在寻找文件而不是模块:

<script type="text/javascript" src="/js/bower_components/requirejs/require.js"></script>
<script>
    // obtain requirejs config
    require(['require', '/js/require-config'], function (require, config) {

        // update global require config
        window.require.config(config);

        // load app
        require(['/js/main']);
    });
</script>

资源解释为脚本,但使用 MIME 类型 text/html 传输:“http://domain.local/js/require-config”。需要.js:1895

Uncaught SyntaxError: Unexpected token

http://domain.local/js/main”。 require.js:1895 未捕获的语法错误: 意外的令牌

我已经尝试了几个组合,但每次它都会破坏一些东西:(

我们将不胜感激;)

【问题讨论】:

    标签: javascript requirejs


    【解决方案1】:

    如果路径以“/”开头,请添加 .js 扩展名。

    <script type="text/javascript" src="/js/bower_components/requirejs/require.js"></script>
    <script>
        // obtain requirejs config
        require(['require', '/js/require-config.js'], function (require, config) {
    
            // update global require config
            window.require.config(config);
    
            // load app
            require(['/js/main.js']);
        });
    </script>
    

    更喜欢使用这部分:

    index.html:

    <script data-main="/js/require.file.js" src="/js/bower_components/requirejs/require.js"></script>
    

    require.file.js:

    require.config({ // Your config :
        baseUrl: "/js"
    });
    require(["main"],
        function(someModule, myModule) {
            //onload.
        }
    );
    

    查看更多:Configuration Options

    【讨论】:

      【解决方案2】:

      有类似的问题。只需检查您是否不要求具有扩展名的文件,如下所示:

      require.config({
          paths: {
              jqueryui: 'js/vendor/jquery.ui.widget.js'
          }
      })
      

      只需从文件名中删除 .js 部分:

      require.config({
          paths: {
              jqueryui: 'js/vendor/jquery.ui.widget'
          }
      })
      

      为什么会出现问题?因为我在后端使用的框架服务于它自己的 404 页面,所以我总是看到完全生成的有效 HTML 页面,而不是来自服务的 404 响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-04
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 2022-11-27
        • 2015-02-19
        • 1970-01-01
        相关资源
        最近更新 更多