首页 > 解决方案 > requirejs 中的 main.js 在重定向后不加载

问题描述

我将 MVC 与 .NET 一起使用。

Requirejs 在我的应用程序主页上加载良好(URL 是http://localhost:62124) 我添加了一个按钮来将用户重定向到另一个具有表单的页面。重定向后的 URL 是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 ?

编辑:

这就是我在 _Layout.cshtml 中加载 main.js 的方式

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

标签: javascriptc#asp.net-mvc-4requirejs

解决方案


我能够通过改变来解决这个问题

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

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

推荐阅读