1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

npx ts-node --esm 実行時の TypeError [ERR_UNKNOWN_FILE_EXTENSION] の解決方法

Posted at

はじめに

batchファイルを
npx ts-node --esm 'batchファイルのパス')
で実行しようとした際に、

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for 'batchファイルのパス'

というエラーが発生しました。

今回はこちらのエラーの解決方法をご紹介します。

環境

Node.js: v22.9.0
ts-node: v10.9.2
TypeScript: v5.6.3

ts-node とは?

ts-nodeは、TypeScriptファイルを直接Node.js環境で実行するためのツール。

TypeScriptコードをJavaScriptにコンパイルせずに直接実行可能。

解決方法

// tsxをインストール
npm install tsx

tsx とは?

tsxは、Node.js環境でTypeScriptファイルを直接実行するためのモダンなツール。

ts-nodeとの違い:
ESM/CJS間の混在を気にせず実行可能。

tsxをインストール後、
npx tsx 'batchファイルのパス'を実行するとbatchファイルが起動する。

補足

batchファイル内で環境変数を使用している場合、
npx tsx -r dotenv/config 'batchファイルのパス'
というふうに-r dotenv/configをコマンドに追加し、コマンド実行時に環境変数を事前に読み込ませる設定が必要です。

VITEを使用している場合、環境変数名の頭にVITE_を使用していると思いますが、npx tsx -r dotenv/configで環境変数を読み込む場合は環境変数名の頭のVITE_があるとエラーになります。

別途VITE_がついていない環境変数を追加するなど適宜対応してください。

まとめ

今回のエラーはNode.jsとts-nodeのバージョンが合わないために起こったエラーでした。

エラー解決の途中でNode.js環境でTypeScriptファイルを直接実行ツールであるts-nodeとよりモダンなツールであるtsxについて学ぶことが出来たので良かったです。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?