使用Asp.net Core诊断Angular4服务器端渲染问题

我们使用服务器端呈现(JavaScriptServices)的Angular的dotnet模板开始了我们的项目。
我们有时会在服务器端渲染Angular4时超时,并且没有太多例外可以帮助我们诊断问题,特别是如果在客户端渲染上都能很好地工作。
在服务器端运行时,有没有办法访问TS / JS代码的控制台日志?
或者一种获取错误的调用堆栈的方法? 由于我们只收到没有任何信息的消息。

我尝试使用这些指令附加一个调试器,但出现错误:

InvalidOperationException:Node.js进程无法初始化:警告:这是一个实验性功能,可随时更改。


一方面,在这里你可能有两篇关于这个话题的好文章,可能你已经看到了:

  • https://github.com/aspnet/JavaScriptServices/tree/dev/src/Microsoft.AspNetCore.SpaServices#debugging-your-javascripttypescript-code-when-it-runs-on-the-server

  • https://blogs.msdn.microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/

  • 另一方面,这个问题可能会给你带来如何解决问题的想法,也许你需要在你的启动类如Webpack或NodeServices中配置一些中间件:

  • https://github.com/aspnet/JavaScriptServices/issues/144
  • 我希望这个重点朝着正确的方向发展。

    胡安


    您发布的链接是处理诊断的一种方式,我们使用JSNLog来处理我们的应用程序。

    在您的Angular 2+应用程序中安装JSNLog

    在命令行上,安装NPM软件包:

    npm install jsnlog --save
    

    向服务器发送未捕获的JavaScript异常

    一个未捕获的异常只是一个没有被你自己的代码捕获的异常。 你会想将这些记录到服务器上。

    默认情况下,Angular通过向控制台发送错误消息来处理未捕获的异常(细节)。 为了改变这个,你为ErrorHandler接口创建一个提供者(例子)。

  • 用你最喜欢的编辑器打开你的主模块。 这通常被称为app.module.ts。
  • 在模块定义之上,添加一个未捕获的异常处理程序,它使用JSNLog将JavaScript异常记录到服务器:

     export class UncaughtExceptionHandler implements ErrorHandler {  handleError(error: any) {
           JL().fatalException('Uncaught Exception', error);
       } }
    
     // Existing module definition @NgModule({
       ...
    
  • TypeScript编译器会抱怨,因为你没有导入JSNLog和ErrorHandler。 现在这样做:

    // ...其他进口...

    import { JL } from 'jsnlog';
    
    import { ErrorHandler } from '@angular/core';
    Finally add your uncaught exception handler to the providers list, as a provider for the ErrorHandler interface:
    @NgModule({
        ...
        providers: [
            ...
            { provide: ErrorHandler, useClass: UncaughtExceptionHandler }
        ],
        ...
    }) 
    
  • 欲了解更多信息,请参阅

    链接地址: http://www.djcxy.com/p/31383.html

    上一篇: Diagnosing problems on Angular4 server side rendering with Asp.net Core

    下一篇: angular4 server side rendering issue