Rendezvous-Tokyo

typescript化したnodeアプリのホットリロードで若干ハマった

環境

  • node
  • express
  • nodemon
  • typescript

もともとは上の3つで動かしてた。

package.jsonのscriptsはこんな感じ。

  "scripts": {
    "dev": "env-cmd nodemon index.js",
    ...

yarn dev でアプリ起動。

Typescript化後のホットリロードのやり方(成功パターン)

ts-nodeなかったら追加。

yarn add -D ts-node

nodemon.json を作成。

{
  "watch": [""], // 監視ディレクトリを指定
  "ext": "ts",   // 監視ファイルの拡張子
  "exec": "ts-node --files ./index.ts"
}

以上。

yarn dev でアプリ起動すれば従来通りホットリロードされる。

Typescript化してハマった箇所

nodemon.jsonのexecコマンドの --files を指定してなかった。

すると 型定義ファイルが見つからんなどのエラーが。

/hoge/node_modules/ts-node/src/index.ts:859
    return new TSError(diagnosticText, diagnosticCodes, diagnostics);
           ^
TSError: ⨯ Unable to compile TypeScript:
index.ts:206:16 - error TS2304: Cannot find name 'HogeType'.

...

頑張ってtsconfig.jsonに色々書き足したが全く解決しなかった。

"lib": ["es6", "dom"],
"paths": {
  "*": ["./@types/*"]
},                   
"typeRoots": ["./@types"],
"types": ["node"], 

--filesを忘れずに指定しよう

以上。