The Serverless version (3.xx.x) does not satisfy the "frameworkVersion" (2) in serverless.yml が発生した場合の対応方法

発生した事象

過去に Serverless Framework で開発したプログラムに手を入れようとした際、以下のエラーが発生した。

$ sls invoke local --function test
Environment: darwin, node 16.17.1, framework 3.23.0, plugin 6.2.2, SDK 4.3.2
Docs:        docs.serverless.com
Support:     forum.serverless.com
Bugs:        github.com/serverless/serverless/issues

Error:
The Serverless version (3.23.0) does not satisfy the "frameworkVersion" (2) in serverless.yml

解決方法

"frameworkVersion" (2) in serverless.yml というエラーならば

$ npm i serverless@2

"frameworkVersion" (1) in serverless.yml というエラーならば

$ npm i serverless@1

原因

現在の Serverless Framework の最新バージョンは 3 である。 そのため、最近 Serverless Framework を 公式の手順 通りインストールしたのであれば、下記コマンドによって Serverless Framework 3 が global にインストールされているはず。

$ npm install -g serverless

しかし、Serverless Framework 3 では 過去の 21 で作成されたプロジェクトを扱うことができないということで、上記のエラーが発生する。

そのため、本エラーが発生する(つまり過去のバージョンで作成した)プロジェクトで引き続き sls コマンドで動作確認やデプロイを行いたい場合、そのプロジェクト内においてのみ過去の Serverless Framework 2 を使用するようにすれば良いということになる。上記の 解決方法 に記述したコマンドは、それを実現する。

執筆日: