🍢
TypeScriptで作ったAzure Functionsで、エントリーポイントが特定できないエラーが出た時の対処方
なんの記事か
TypeScriptで作ったAzure Functionsのアプリで
$ func start
を実行した結果
Stack: Error: Unable to determine function entry point. If multiple functions are exported, you must indicate the entry point, either by naming it 'run' or 'index', or by naming it explicitly via the 'entryPoint' metadata property.
となった場合の対処方法
なんのエラーか
function.json
のscriptFile
で指定したファイルが複数のexport
をしている場合に、Azure Functionsはどれを使えばいいかわからなくてエラーになるので、エントリーポイントを明示してあげる必要があるみたいです
対応方法
function.json
で、エントリーポイントを明示しよう。
{
"bindings": [
{
"(省略)": "(省略)"
}
],
"scriptFile": "../dist/(関数名)/index.js",
"entryPoint": "default"
}
ちょっと待って、exportしてる関数1つだけなんだが?
意図的に何かをしない限り、index.ts
でexportしている関数は、1つだけになると思う。
export default timerTrigger
それでもこのエラーは発生する。
なぜならtsをbuildした際にindex.js
で他のexportが発生することがあるから。
こんなふうに。
exports.__esModule = true;
なので、明示してあげないと、エラーになってしまうのだ!
いや、ふざけんなよ!!
これ関数ですらないし。。。
そもそも複数あったらexport defaultしてるやつを優先して見に行けよ!
TypeScriptもAzureもMicrosoftが開発してるんだから、もう少し開発しやすいように考慮してほしいです。ほんとお願いします。
Discussion