如果不在根路径,则要求JS不加载

时间:2014-07-03 01:35:05

标签: javascript requirejs

我的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:意外的令牌&lt;

     

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

     

require.js:1895 Uncaught SyntaxError:意外的令牌&lt;

你可以看到它在相对路径上寻找文件: 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”。 require.js:1895

     

未捕获的SyntaxError:意外的令牌&lt; require-config:1资源被解释为脚本但使用MIME类型text / html传输:

     

http://domain.local/js/main”。 require.js:1895 Uncaught SyntaxError:   意外的标记&lt;

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

非常感谢帮助;)

2 个答案:

答案 0 :(得分:5)

如果您的路径以&#34; /&#34;开头,请添加.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

答案 1 :(得分:0)

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

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

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

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

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