6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CDK - Typescript(Node.js v24)でESM対応がしたい

6
Posted at

NTTテクノクロス株式会社の渡邉です。

今回はAWS CDKの動作環境をTypeScript+ESMにしようとした時の記録を残します。

ECMAScript Modules(ESM)とは

ECMAScript Modules(ESM)は、JavaScript公式のモジュール仕様で、ブラウザと Node.js の両方で機能する。Node.jsではデフォルトでCommonJSになってるし、AWS CDKが作るディレクトリも後方互換性を重視してCommonJS用になっている。とはいえ、現在はこちらが主流になっているようなので、可能ならば追従したい。

Node.js v24

Node.js v24は2025/10/28にLTS版が使えるようになったので、切り替える。
※アップデート手順が雑なのは許してほしい。

nvm install v24.11.0
nvm use v24.11.0

node -v
v24.11.0

CDKの導入

CDK InitでTypeScript用の環境を設定する。
余談だが、最近は-l typescriptじゃなくても-l tsでTypeScriptを指定できて便利ですね。

npx cdk init -l ts

ESM対応

  1. package.json"type": "module"を追加する。
  2. tsconfig.json"allowImportingTsExtensions": trueを追加する。
    • これは後述のImportのため
  3. エントリポイントのimportに.ts拡張子を追加する。
  4. エントリポイントのnodeで実行する。

3は具体的にはこういうことです。

bin/cdk.ts
#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib/core';
- import { CdkStack } from '../lib/cdk-stack';
+ import { CdkStack } from '../lib/cdk-stack.ts';

const app = new cdk.App();
new CdkStack(app, 'CdkStack', {});

4.について、Node.js v23からは直接TypeScriptを実行できるようになったので、ts-nodeやtsxで悩まずに、実行がnodeだけで済むようになった。

cdk.json
- "app": "npx ts-node --prefer-ts-exts bin/cdk.ts",
+ "app": "node bin/cdk.ts",

まとめ

他にも修正すべきところは沢山あるとは思うが、まずはこれで簡単にnpx cdk synthはできることが分かった。出発点としてはこの辺りから始めると良さそうです。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?