debugging 如何在ASP.NetCore3.1MVC应用程序(Razor视图- *.cshtml)中调试JavaScript?

vatpfxk5  于 2022-11-14  发布在  .NET
关注(0)|答案(2)|浏览(106)

我有最新的Visual Studio 2019 16.5.4企业版
我刚刚从模板(使用默认设置)创建了一个ASP.NetCore3.1MVC应用程序。
我还在主页的Index.cshtml中添加了一些JavaScript代码:

@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

@section Scripts {
    <script>
        function GetJSON_Simple() {
            var resp = [];           
            return resp;
        }

        debugger;
        var simpleData = GetJSON_Simple();

    </script>
}

而且我无法调试JavaScript代码(GetJSON_Simple函数体内部或var simpleData = GetJSON_Simple()上的断点从未被命中)。
显示this article(**使用Razor调试动态文件中的JavaScript(ASP.NET)**部分):

**放置调试器;语句:**这将导致动态脚本在创建时停止执行并立即开始调试。

P.S.我已经有了工具-〉选项-〉调试-〉常规,并打开了启用ASP.NET(Chrome和IE)的JavaScript调试复选框,当然我正在调试中编译。
我的测试项目是attached

wbgh16ku

wbgh16ku1#

如何在ASP.NetCore3.1MVC应用程序(Razor视图- *.cshtml)中调试JavaScript?

事实上,这已经是一个众所周知的问题。**我们无法调试Net Core剃刀页面下的js代码,只能调试单独的js或ts文件中的代码。**请参见this link
解决方案

为了解决这个问题,我建议你可以创建一个新的js文件,名为test.js,然后在剃刀页面引用它,然后你可以在调试它的时候进入js代码。

**1)**创建一个名为test.js的文件,并将js代码迁移到其中:

function GetJSON_Simple() {
            var resp = [];           
            return resp;
        }

        debugger;
        var simpleData = GetJSON_Simple();

**2)**更改为在cshtml文件中使用该文件:

@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

@section Scripts {
    <script scr="xxx/test.js">  
    </script>
}

3)****清理您的项目,然后重新构建您的项目并调试它,您将遇到Js代码。

f1tvaqid

f1tvaqid2#

另一种方法是通过 sourceURL 注解直接在javascript代码中显式定义脚本的源Map名称。

<script>

...your script code

//# sourceURL=blah
</script>

该块中的脚本将以您指定的值显示在Chrome中,然后您可以像普通的.js文件一样查看和调试。
如果您不想重构cshtml文件中嵌入了javascript的现有代码库,或者不想重构任何动态加载了javascript的代码库,这一点尤其有用。

示例

你可以在这里看到一个内置javascript runner的例子。只要点击“运行代码片段”,然后在你的页面源代码中搜索“blahblah”。你应该会看到这样的结果:

alert("test");
//# sourceURL=blahblah

相关问题