Serverless Framework のプロジェクト作成でエラー

Posted on 2021-02-28 in zakki

久しぶりに Serverless Framework を使用しようとしたらエラーが発生してしまった。

$ sls

/home/xxxx/.npm-global/lib/mode_modules/serverless/node_modules/queue-microtask/index.js:5
  ? queueMicrotask.binf(globalThis)

ReferenceError: globalThis is not defined
    at Object.<anonymous> (/home/xxxx/.npm-global/lib/node_modules/serverless/node_modules/queue-microtask/index.js:5.25)
:
:

nodejsのバージョンが古いことが原因のようだった。globalThisnodejs ver12 以降を要求されるようです。

$ node -v
v11.15.0

$ npm -v
6.7.0

( 参考 ) 'globalThis' underfined for Jest test cases

対処

バージョンが古いのでバージョンアップを行う。色々方法はあるっぽいけど手軽だったのでnを使う。

  • n のインストール
$ npm install -g n
/home/xxxx/.npm-global/bin/n -> /home/xxxx/.npm-global/lib/node_modules/n/bin/n
+ n@7.0.2
added 1 package from 4 contributors in 0.4s
  • nodejs の安定版のバージョンを確認
$ n --stable
14.16.0
  • nodejs の安定版をインストールする

/usr/local を触るため sudo が必要になる。

$ sudo n stable

   installing : node-v14.16.0
        mkdir : /usr/local/n/versions/node/14.16.0
        fetch : https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.gz
    installed : v14.16.0 (with npm 6.14.11)

nodejs および npm のバージョン確認を行う。

$ node -v
v14.16.0

$ npm -v
6.14.11

確認

改めて serverless framework を使用して動作することを確認する。

$ sls

Serverless: No project detected. Do you want to create a new one? (Y/n)
:

nodejs npm Serverless Framework