3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NodeJS v12 で AWS Amplify コマンドのインストール時、エラーが出る現象をどうにかする

Posted at
1 / 14

NodeJS v12 で @aws-amplify/cli をインストールすると、依存パッケージの fs-ext のビルドがコケるけど、なぜかインストールは成功する、という気持ち悪い現象が起きています。

これを対症療法的にどうにかしましたので、記事にまとめてみました。


tl;dr

npm install -g --no-optional @aws-amplify/cli

現象

AWS Amplify を使うために、amplify コマンドをインストールします。

通常、以下のようなコマンドでインストールしますが、途中でエラーが大量発生します。😰


$ npm install -g @aws-amplify/cli
    :
  (中略)
    :
../fs-ext.cc:281:40: error: too few arguments to function call, single argument 'context' was not specified
  flock_data->fd = info[0]->Int32Value();
                   ~~~~~~~~~~~~~~~~~~~ ^

その一方で インストールそのものは成功する という、気持ちの悪い現象が起きます。

(macOS のみ、Windows では何の問題もなくインストールできました)


調査

fs-ext というパッケージが何か悪さをしているように見受けられるので、依存関係を確かめてみましょう。


$ npm ls -g fs-ext
/Users/kurone-kito/.anyenv/envs/nodenv/versions/12.7.0/lib
└─┬ @aws-amplify/cli@1.12.0
  └─┬ amplify-util-mock@0.3.0
    └─┬ amplify-appsync-simulator@0.3.0
      └─┬ @conduitvc/mosca@2.8.3
        └─┬ ascoltatori@3.2.0
          └─┬ qlobber-fsq@3.2.4
            └── UNMET OPTIONAL DEPENDENCY fs-ext@~0.5.0

ということで、fs-ext をインストールしてみると、何事もなくうまくいきました。
最新版との間に何があったか探ってみると、以前は NodeJS 11 以降では動かなかったようです


どうにか解決してみる

早速 NodeJS をバージョンダウンしてインストールしてみます。
筆者の環境だと、v10 でも別のエラーが出て、v8 でようやくちゃんとインストールできました。


とはいえ、v12 の機能が使えないのは辛いので、別の手を考えてみます。
先ほどのツリーをみると、UNMET OPTIONAL DEPENDENCY という表示が気になります。つまり、このパッケージは必須ではない ということです。


つまり、上記コマンドで解決です 😌

npm install -g --no-optional @aws-amplify/cli

考察

qlobber-fsqascoltatori あたりは最新でも死ぬので、この辺の古い依存関係に根本的な原因がありそうです。
また Optional をインストールしないと、特定機能が使えなくなる というリスクは捨てきれません。。


おしまい。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?