首页 文章

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

提问于
浏览
2

我的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:意外的令牌<require-config.js:1资源被解释为脚本,但是使用MIME类型text / html传输:“http://domain.local/users/main.js” . require.js:1895 Uncaught SyntaxError:意外的令牌<

你可以看到它在相对路径上寻找文件: http://domain.local/users/js/require-config.js

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

如果我在模块前添加一个 / ,那么's not working anymore because it'正在寻找一个文件而不是一个模块:

<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 Uncaught SyntaxError:意外的令牌<require-config:1资源被解释为脚本,但使用MIME类型text / html传输:“http://domain.local/js/main” . require.js:1895 Uncaught SyntaxError:意外的令牌<

我尝试了几个combinaison,但每次它打破了一些东西:(

非常感谢帮助;)

2 回答

  • 5

    如果路径以“/”开头,请添加.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

  • 0

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

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

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

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

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

相关问题