我是Angular2的新手,并且对将其集成到ASP.NET Web应用程序中还是很新的。
当我尝试在Angular2 ASP.NET Web应用程序中以调试模式进行构建时出现此错误。在发布模式下构建时出现相同的错误。

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0]An unhandled exception has occurred while executing the requestMicrosoft.AspNetCore.NodeServices.HostingModels.NodeInvocationException: Prerendering failed because of error: ReferenceError: window is not defined at D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:89981:21 at Object.<anonymous> (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:90732:3) at Object.<anonymous> (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:90734:30) at __webpack_require__ (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:21:30) at Object.<anonymous> (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:85385:1) at Object.<anonymous> (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:85386:30) at __webpack_require__ (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\vendor.js:21:30) at Object.<anonymous> (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\main-server.js:20466:42) at __webpack_require__ (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\main-server.js:20:30) at Object.exports.REPLACEMENT_CHARACTER (D:\Projects\BryterOpsAdmin\BryterOpsAdmin\ClientApp\dist\main-server.js:398:79)Current directory is: D:\Projects\BryterOpsAdmin\BryterOpsAdmin

我刚刚在mvc方面对模型类进行了一些微不足道的更改,因此,当出现此错误时,我恢复了更改并再次尝试。
我仍然收到此错误。根据我的源代码控制,自上次正常运行以来,绝对没有任何更改。
是什么导致此错误?我完全不知道要寻找什么。

我在StackOverflow上搜索了任何相关内容,但除了以下问题外,我没有找到适用于asp.net的任何内容:Prerendering failed because of error: ReferenceError: window is not defined
从来没有回答过。

我尝试删除隐藏的obj和bin文件夹无济于事。

先感谢您。

更新:
我尝试直接导航到我网站上的页面,该操作成功完成。似乎Angular2不再自动路由。我仍然通过MVC(“ Home / Index”)访问Home Controller和Home Index.cshtml视图,因此这似乎是一个Angular2问题。

这就是我的angular2路由外观。

`

RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: 'counter', component: CounterComponent },
            { path: 'fetch-data', component: FetchDataComponent },
            { path: 'bryterUsers', component: BryterUsersComponent },
            { path: 'adminUsers', component: AdminUsersComponent },
            { path: 'retailers', component: RetailersComponent },
            { path: 'providers', component: ProvidersComponent },
            { path: '**', redirectTo: 'home' }
        ])`


UPDATE2:我现在无法再导航到任何其他页面。无论我走到哪里,都会收到“未定义窗口”错误。我的代码没有任何改变。我完全迷住了。任何帮助将不胜感激。

最佳答案

我在这里找到了答案,尽管我不知道这是否是正确的答案:

Prerendering failed because of error: ReferenceError: Event is not defined with PrimeNG AutoComplete

他们所做的是:

“我能够通过更改由ASP.Net Core模板生成的Index.cshtml页面中的asp-prerender标签来解决此问题。我从我的问题中遗漏了有关ASP.Net Core模板的要点。

我更改了标签

<app asp-prerender-module="ClientApp/dist/main-server">Loading...</app>



<app asp-ng2-prerender-module="ClientApp/dist/main-server">Loading...</app>

这解决了我的问题,但是我不知道这是否是最佳实践。

关于angular - ASP.NET中的Angular2-未定义窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46045736/

10-10 00:42