こちらの記事で解説しているfunctions-emulatorは既に Deprecated になっており困ってしまったので覚書を残しておきます。
デバッグツール
tsconfig.json
の作成
TypeScriptで開発している場合は、tsconfig.json
のsourceMap
をtrue
にしておきます。
{
"compilerOptions": {
"module": "commonjs",
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es6"
},
"compileOnSave": true,
"include": [
"src"
]
}
launch.json
の作成
.vscode/launch.json
を作成します。ポイントはoutFiles
の箇所で、これを書くとマップファイルを読み込んで、TypeScript上に直接ブレークポイントを設置できます。
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Functions",
"type": "node",
"request": "attach",
"processId": "${command:PickProcess}",
"outFiles": ["${workspaceRoot}/functions/lib/**/*.js"]
}
]
}
ローカルエミュレータを起動
私はできるだけグローバルインストールしたくない派なので、npx
を使って起動します。ポイントは--inspect-functions
で、このオプションをつけて起動しないと、ブレークポイントを設置しても止まってくれません。
npx firebase emulators:start --inspect-functions --only functions
VSCode のデバッガを起動
VSCodeで F5 を打つとアタッチ先のプロセスを訊いてくるので、エミュレータのプロセスを選択します。コンソールに Debugger attached.
と表示されたら、ブレークポイントで止めることができるようになります。
以上