我刚刚执行了我的MVC应用程序的第一次部署,我遇到了一些Javascript问题。
为了在运行时挂钩,我这样做:
_Layout.cshtml
@if (IsSectionDefined("MyPage"))
{
<script type="text/javascript">
$(document).ready(function () {
@RenderSection("MyPage", required: false)
});
</script>
}
MyPage.cshtml
然后在我的Razor视图中我这样做:
@section MyPage
{
myPage.SomeFunction();
}
myPage.js
(function (myPage, $) {
myPage.SomeFunction = function () {
...
};
}(window.myPage= window.myPage|| {}, jQuery));
这在VS中的调试中都很有效,但是一旦部署它(在NuGet包中使用Otopus Deploy进行持续部署),我就开始看到如下错误:
ReferenceError: myPage is not defined.
如果我查看源代码并按照包链接进行代码,那么......
但该文件的缩写错误如下:
/* Minification failed. Returning unminified contents.
(683,1-2): run-time warning JS1002: Syntax error: }
(683,51-52): run-time warning JS1002: Syntax error: }
*/
// Contains all the javascript required by the myPage page
我目前正在处理Visual Studio中的JSLint错误,但我认为这些更多是关于格式化而不是直接关联JS上的ReferenceError,因为我可以加载JS,因为我可以从页面源链接到该函数。
关于要查看什么或如何解决此问题的任何指示?
答案 0 :(得分:0)
这让我难过了一会儿。
所有Javascript都在那里(可以链接到页面源中的包链接),所有文件都在那里,一切都在dev中工作(不是总是吗?)。
无论如何,如果您在已部署的应用程序中看到此错误,则需要执行几个步骤。
首先,您应该下载并安装Visual Studio工具JSLint.VS2012。然后将其设置为显示警告,并且不要将其设置为使构建失败。 JSLint对事物并不善良且非常严格(您坚持使用BP是您的选择,但肯定会推荐!)
所以,你部署你的应用程序和BANG所有可爱的JS都坏了。永远不要害怕...弹出到您的Web应用程序Global.asax文件和Application_Start方法包括:
BundleTable.EnableOptimizations = true;
现在使用此设置集,您可以在Visual Studio中以调试模式启动应用程序,并强制执行所有优化以测试缩小,并将测试更精确地建模到已部署的版本。
一旦您完成了工作并更清楚地看到问题,您就可以使用新JSLint VS插件中的报告来解决潜在问题,以修复语法和其他格式问题。