TypeScriptでトランスパイルしたコードをnodeで実行しようとするとEmit skippedになる

システム開発Tips

TypeScriptでトランスパイルしたコードをnodeで実行しようとすると
https://github.com/TypeStrong/ts-node/issues/693
に記載されているように以下のようなエラーが表示されました。

node_modules/ts-node/src/index.ts:370
        throw new TypeError(`${relative(cwd, fileName)}: Emit skipped`)
              ^
TypeError: project/my_file.ts: Emit skipped

かなり、調べたのですが、結論としてjsファイルとtsファイルが同じ階層に存在するせいでどちらのファイルを見に行くかわからなくなっているように思いました。

ディレクトリ構成はTypeScriptでsrcディレクトリを作らないこちらの記事を参考に同一ディレクトリ内に横一列で作る形にしていたのですが、だめなようです。

ちゃんとdist作って出力しましょうね。という話でした。

ちなみにtsconfig.jsonに以下のようにts-nodeのオプションを指定すれば起動はできましたが、typescriptを使用しているのに型チェックしない設定にしておくとか本末転倒なので不採用としました。

"ts-node": {
  "transpileOnly": true
}

※最終的にたどり着いたところはここでした。
https://github.com/TypeStrong/ts-node/issues/693

うーん、同列階層の構造は画期的だなと思ったのですが、採用できなくて残念です。

フォローお願いします!

コメント

タイトルとURLをコピーしました