使用 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 代理 不支持检测 ECMAScript 模块 (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 代理按预期工作,请遵循 故障排除指南