NestJS で ts ファイルの位置をスタックトレースに表示するために node-source-map-support を導入する方法

NestJS で ts ファイルの位置をスタックトレースに表示するために node-source-map-support を導入する方法をご紹介します。

NestJS

背景 NestJS のスタックトレースのファイル位置を .ts にしたい

NestJS のスタックトレースが .js ファイルの位置でエラー発生箇所を特定するのに困っていたので、 これを .ts ファイルにするために source map を導入しました。

解決方法 node-source-map-support を導入する

source-map-support インストール

npm install source-map-support --save

import ‘source-map-support/register’;

AppModule で import ‘source-map-support/register’; を追記するだけで OK です。

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
if (process.env.NODE_ENV === 'development') {
  require('source-map-support/register');
}

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

余談 Sentry へ Source Map が反映されない

上記で NODE_ENV ‘development’ のときのみ require(‘source-map-support/register’); しているのは理由がありまして ‘production’ で ‘source-map-support/register’ を利用すると、 Sentry へ Source Map が正しく反映されないためです。

if (process.env.NODE_ENV === 'development') {
  require('source-map-support/register');
}

以上、NestJS で ts ファイルの位置をスタックトレースに表示するために node-source-map-support を導入した、現場からお送りしました。