使用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中配置一些中间件:
我希望这个重点朝着正确的方向发展。
胡安
您发布的链接是处理诊断的一种方式,我们使用JSNLog
来处理我们的应用程序。
在您的Angular 2+应用程序中安装JSNLog
在命令行上,安装NPM软件包:
npm install jsnlog --save
向服务器发送未捕获的JavaScript异常
一个未捕获的异常只是一个没有被你自己的代码捕获的异常。 你会想将这些记录到服务器上。
默认情况下,Angular通过向控制台发送错误消息来处理未捕获的异常(细节)。 为了改变这个,你为ErrorHandler接口创建一个提供者(例子)。
在模块定义之上,添加一个未捕获的异常处理程序,它使用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