重定向后未加载requirejs中的main.js

时间:2019-01-06 22:18:31

标签: javascript c# asp.net-mvc-4 requirejs

我正在将MVC与.NET配合使用。

Requirejs在我的应用程序主页上正常加载(URL为http://localhost:62124),我添加了一个按钮来将用户重定向到具有表单的另一个页面。重定向后的网址为http://localhost:62124/Users/RedirectToSignUp 我在控制台中收到这些错误消息

http://localhost:62124/Users/Scripts/main.js net::ERR_ABORTED 404 (Not Found)

Uncaught Error: Script error for "main"
https://requirejs.org/docs/errors.html#scripterror
    at makeError (require.js:5)
    at HTMLScriptElement.onScriptError (require.js:5)

这是我的脚本目录结构

Scripts
|----Custom
|----|---- login.js
|----|---- signup.js
Bootstrap.min.js
jquery-3.3.1.js
jquery.validate.min.js
jquery.validate.unobtrusive.min.js
knockout-3.4.2.js
main.js
modernizer-2.8.3.js
require.js

登录页面(即主页)将加载所有正确的脚本。此页面上的requirejs的路径是/ Scripts / requirejs。但是,在另一页上,它试图在Users/Scripts/main.js下找到不存在的main.js。

这是我的main.js的样子

requirejs.config({
    baseUrl: '/Scripts',
    paths: {
        'jquery': 'jquery-3.3.1.min',
        'jquery.validate': 'jquery.validate.min',
        'jquery.validate.unobtrusive': 'jquery.validate.unobtrusive.min',
        'knockout': 'knockout-3.4.2',
        'login': 'Custom/login',
        'signup': 'Custom/signup'
    },
    shim: {
        'jquery.validate': ['jquery'],
        'jquery.validate.unobtrusive': ['jquery', 'jquery.validate']
    }
});
var base = {}

base.init = function () {

    if (applicationConfig.login) {
        require(['login']);
    }
    if (applicationConfig.signup) {
        require(['signup']);
    }
}

base.init();

即使重定向后,如何正确加载requirejs和main.js?

编辑:

这是我将main.js加载到_Layout.cshtml中的方式

<script data-main="Scripts/main" src="~/Scripts/require.js"></script>

1 个答案:

答案 0 :(得分:0)

我能够通过更改

来解决此问题
<script data-main="Scripts/main" src="~/Scripts/require.js"></script>

<script data-main="/Scripts/main" src="~/Scripts/require.js"></script>