少し前に Deno 1.2.0 がリリースされていました。
このリリースで、Windows 版のAzure App Service での動作が改善しました。
# Linux 版の App Service では、これまでのリリースでも問題ありませんでしたが。
具体的には 下記の 2 つの issue です。
ユーザー プロファイル問題
1 つ目の issue は、Deno が起動時にユーザー プロファイルの読み込みに失敗し panic になる、というものです。
これはアプリケーション設定 WEBSITE_LOAD_USER_PROFILE
を設定することで回避できることが、しばやんさんからコメントもらってました。
一方で、このプロファイルに関するアプリケーション設定は、占有型の App Service プラン (Basic 以上) でのみ使用可能な方法ため、Free (F1), Shared (D1) では Deno は動かせない状態でした。
issue を上げたのが去年の 12 月だったので、半年以上進展がない状態でしたが、「この PR で直ってると思うよ、確認して」と v1.2.0 のリリースにマージされた下記 PR を案内されました。
v1.2.0 を App Service (Free) にデプロイして試してみると、確かに panic は出なくなっていました。
すばらしい!
これで、Free, Shared といったお試しプランで、Deno を試すことができます。
Azure Functions での標準入力問題
2 つ目の issue は、Azure Functions のカスタム ハンドラーとして deno v1.1.x を使った時に、deno run
時に panic になる、というものです。
こちらも Windows 版のみで発生していた問題で、v1.0.x までは上記 WEBSITE_LOAD_USER_PROFILE
を設定することで問題なく動いていたところで、v1.1.x で突如発生しました。
Azure Functions の function host のプロセスが標準入力を無効にした状態でカスタム ハンドラー用のプロセスを起動しており (これは「by design だ」と言われました)、Deno が起動時に標準入力が取れず panic になっているようでした。
Azure Functions 以外でも、標準入力を無効にして Deno を起動するとリプロすることが分かったので、「これでリプロするよ」と貼り付けたら、さっきの PR と同じ方が「じゃあ、俺やるよ」と颯爽と現れ、サクっと直してくれたようです。
何者なんでしょうか。。。
何はともあれ、今のところ Azure App Service 上で Deno を使うときのめぼしい問題は片付いたように見えます。