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

时间:2017-08-11 10:07:38

标签: angular asp.net-core diagnostics angular-universal

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

我尝试使用these instructions附加调试器,但收到错误:

  

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

2 个答案:

答案 0 :(得分:0)

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

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

我希望这个重点放在正确的方向上。

答案 1 :(得分:0)

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

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

在命令行中,安装NPM包:

npm install jsnlog --save

将未捕获的JavaScript例外发送到服务器

未捕获的异常只是一个异常,不会被您自己的代码捕获。您需要将这些记录到服务器。

默认情况下,Angular通过向控制台发送错误消息来处理未捕获的异常(详细信息)。要更改此设置,请为ErrorHandler接口创建提供程序(示例)。

  1. 在您喜欢的编辑器中打开主模块。这是最常见的 叫做app.module.ts。
  2. 在模块定义之上,添加一个未捕获的异常处理程序 使用JSNLog将JavaScript异常记录到服务器:

     export class UncaughtExceptionHandler implements ErrorHandler {  handleError(error: any) {
           JL().fatalException('Uncaught Exception', error);
       } }
    
     // Existing module definition @NgModule({
       ...
    
  3. 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 }
        ],
        ...
    }) 
    
  4. 有关详细信息,请参阅this