Next.js 製アプリの Node.js 環境で軽めの ts ファイルを実行したいとき(DB用のシーダーなど)、詰まったので備忘録です。
※Node 23 からTS実行できるらしいのですが、そちらはまだ試してません。
- そのままだとTypeScript動かせないのでts-nodeをインストール。
- コード内のimport文でエラー。
- Next.jsデフォルト設定だとtsconfig.jsonのcompilerOptionsで「"module": "esnext"」となっているが、Node.jsはデフォルトのCommonJS環境(require使う方)で動作している。このため、ts-nodeは実行対象のtsファイルをトランスパイルする際もimport/export文をそのまま残しエラーとなっていた?
- 詳しい方いたらコメントいただけると助かります。
- tsconfig.jsonにてts-node用のcompilerOptionsを追加し「"module": "CommonJS"」を追加して対応。
- import元のコードでパス指定にエイリアス使ってる箇所「"@/hoge"」でエラー。
- nodeやts-nodeは@で始まるようなパスを適切に解釈してくれないっぽい。
- tsconfig-pathsをインストールして対応。
参考記事のみなさま。