使用 TypeScript 入门编辑

Elastic APM Node.js 代理是用原生 JavaScript 实现的,但包含 TypeScript 类型。本文档介绍如何将 APM 代理与您的 TypeScript 项目集成。

可以在 此处找到一个小型完整的示例项目。

安装编辑

elastic-apm-node 作为依赖项添加到您的应用程序中,并且可能将 @types/node 作为开发依赖项用于类型检查

npm install --save elastic-apm-node
npm install --save-dev @types/node 

如果您在 "tsconfig.json" 中使用 skipLibCheck: true,则可以跳过安装 @types/node

tsconfig 编译器选项编辑

TypeScript 作者强烈建议您在 "tsconfig.json" 中使用 "esModuleInterop": true 选项。如果您没有使用,则代理的 "default" 导入将无法正常工作,因此您需要使用 import apm from 'elastic-apm-node/start' 或类似方法,而不是使用

import * as apm from 'elastic-apm-node/start' // if using esModuleInterop:false

目前,Elastic APM Node.js 代理 不支持检测 ECMA Script 模块 (ESM),因此为了获得完整的 APM 支持,您需要告诉 TypeScript 使用 CommonJS 模块通过 "module": "commonjs" 编译器选项生成 JavaScript。

// tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "moduleResolution": "node"
    // ...
  }
}

当前的 TypeScript 针对 node 的推荐 tsconfigs 使用与 APM 代理一起使用的选项。

启动代理编辑

为了使 APM 代理能够自动检测模块,它 必须在您导入其他模块之前启动。这意味着您可能应该在应用程序的主文件中导入并启动代理(通常是 index.jsserver.jsapp.js)。以下是一种方法。

import 'elastic-apm-node/start' 

// Application code starts here.
// ...

此启动方法要求您使用环境变量来配置代理。有关启动代理的所有方法,请参阅 启动代理

请特别注意 可能出现的意外陷阱,其中 TypeScript 编译器可能会丢弃生成的 JavaScript 中的导入。

下一步编辑

APM 代理现在将跟踪您的应用程序,监控性能并记录任何未捕获的异常。请参阅以下文档以配置和使用 APM 代理。

如果您无法使 Node.js 代理按预期工作,请遵循 故障排除指南