技術的な話

Bot Framework SDK(JavaScript)のサンプルEcho Botでエラーが発生した時の対応

概要

Microsoft TeamsでBotを開発しようと思ってBot Framework SDK(JavaScript)を触っていたらサンプルのEcho Botがうまく起動しない。

環境

  • Windows 11
  • Node.js 18.16.0

公式

以下の公式に沿って実装を進めました。

https://learn.microsoft.com/ja-jp/azure/bot-service/bot-service-quickstart-create-bot?view=azure-bot-service-4.0&tabs=csharp

現象

公式に沿ってサンプルを起動しようとすると以下エラーが発生してBotアプリが起動しない。

$ npm start     

> echo-bot@1.0.0 start
> node ./index.js


C:\Users\<UserName>\data\<ProjectName>\node_modules\restify\lib\request.js:848

    Request.prototype.closed = function closed() {
                             ^

TypeError: Cannot set property closed of #<Readable> which has only a getter

対策

公式のサンプルだと使用しているrestifyのバージョンが8.5.1であるが、バージョンを10.0.0以上にアップグレードすると正常に起動する。

私の場合は以下でバージョンを10.0.0に上げて正常に起動するようになりました。

$ npm install restify@10.0.0

参考:https://github.com/restify/node-restify/issues/1925

余談

Node.jsはあんまり触ったことないので、公式ドキュメントにある以下の部分を真に受けて色々インストールしましたがどうやらあまり関係無かったらしい。これで半日ぐらいの時間が吹っ飛びました。

きちんとドキュメントを読んでnode-gyp関係にエラーが出てないことを理解できていればこの辺の沼にハマることも無かったよなぁ。

-技術的な話
-, , , ,