在发布模式下使用捆绑包时出现以下错误:
TypeError:f为null
在调试模式下运行时,我的JS代码没有任何问题。但由于某种原因,一旦文件实际捆绑,我就会收到错误。我定义了以下捆绑包:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/Common/jquery/jquery-{version}.js",
"~/Scripts/Common/jquery/jquery-ui-{version}.js",
"~/Scripts/Common/jquery/jquery.labelify.js"));
bundles.Add(new ScriptBundle("~/bundles/login").Include(
"~/Scripts/Common/knockout/knockout-2.1.0.js",
"~/Scripts/Common/knockout/json2.js",
"~/Scripts/Common/knockout/knockout.validation.min.js",
"~/Scripts/Common/knockout/KnockoutValidationConfiguration.js",
"~/Scripts/App/Common/LoginViewModel.js"
));
我正在页面标题内渲染包。在我的Login.cshtml
文件的底部,我有以下代码:
<script type="text/javascript">
$(function () {
var context = new LoginViewModel();
ko.applyBindings(context, document.getElementById('login_form'));
});
</script>
当我发表评论时,我不再收到错误了。
我不确定这是由LoginViewModel
还是其中一个库引起的。无论如何,这是LoginViewModel
代码:
function LoginViewModel() {
var self = this;
self.Username = ko.observable().extend({ required: { message: "Nom d'utilisateur est obligatoire" } });
self.Password = ko.observable().extend({ required: { message: 'Mot de passe est obligatoire' } });
self.ErrorMessage = ko.observable();
self.enableButton = ko.computed(function () {
var errors = ko.utils.unwrapObservable(ko.validation.group(self));
return (errors.length == 0);
});
self.onLogin = function () {
var credentials = ko.toJSON({
Username: self.Username(),
Password: self.Password()
});
$.ajax({
url: "/Account/Login",
type: "post",
contentType: 'application/json',
data: credentials,
success: function (data) {
if (data && data.result == "success") {
self.ErrorMessage("");
window.location = data.targetUrl;
}
else if (data && data.result == "failure") {
self.ErrorMessage(data.errorMessage);
}
}
});
}
};
有什么想法?我该怎么调试它,为什么它只发生在发布模式?
答案 0 :(得分:0)
请勿使用"~/Scripts/Common/knockout/knockout.validation.min.js"
,而是使用开发文件:"~/Scripts/Common/knockout/knockout.validation.js"
。