expo
を使ったアプリ開発でのビルドエラーの解決と、その原因のバージョン不一致に関しての覚書きです。
node
のグローバルインストールをちゃんとできてなかった。
発端
いざビルドというときキーストアをアップロードするところでエラーが出ました。
1 2 |
Cannot read property 'errors' of undefined Set EXPO_DEBUG=true in your env to view the stack trace. |
なんというかよく見る気がするエラー。
基本的に EXPO_DEBUG
を有効にしても特に役立つ情報は出ません。
キーストアはアップロードか生成するか選べますが、生成した場合は問題なくビルドできたので認証系の問題が発生してるようです。めんどうな。
気になる警告
エラーの内容でググってもらちが明かないので他の部分を見ます。
expo
を使っているとよくあるバージョンのメッセージ。
1 2 3 4 5 6 7 8 9 10 11 |
>yarn build yarn run v1.22.4 $ expo build:android ┌─────────────────────────────────────────────────────────────────────────┐ │ │ │ There is a new version of expo-cli available (3.22.3). │ │ You are currently using expo-cli 3.15.5 │ │ Install expo-cli globally using the package manager of your choice; │ │ for example: `npm install -g expo-cli` to get the latest version │ │ │ └─────────────────────────────────────────────────────────────────────────┘ |
「あー、バージョンね」と思ってたけど npm install -g expo-cli
したばかり。
ちょっと current version
が古すぎる気がするので確認する。
1 2 |
>expo -V 3.22.3 |
最新でした。うーん…となりましたが、 yarn build
などで package.json
の script
実行するとローカルの expo
が使われるのが原因だろうか。
1 2 3 4 |
"scripts": { ..., "v": "expo -V" }, |
1 2 3 4 |
>yarn v yarn run v1.22.4 $ expo -V 3.15.5 |
バージョン古いですね。
しかし確認してみるとローカルのexpo
も最新だった。
ちょっと思いついて npm run
してみます。
1 2 3 4 5 6 |
>npm run v > @ v C:\Users\xxx\expo\app > expo -V 3.22.3 |
あーあー。npm global
をアップデートして yarn global
がそのままになってる。
というわけで yarn global
を更新します。
1 2 3 4 5 6 |
>yarn global add expo-cli >yarn v yarn run v1.22.4 $ expo -V 3.22.3 |
無事に最新バージョンとなりました。
再ビルド
再度ビルドしなおしてみるとすんなり通りました。
ビルド時のキーストア認証部分が大分違います。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//古いバージョン ? Path to keystore: C:\Users\xxx\keystore ? Keystore Alias: xxxxx ? Keystore Password: [hidden] ? Key Password: [hidden] //新しいバージョン √ Path to the Keystore file. ... C:\Users\xxx\keystore √ Keystore password ... *************** √ Key alias ... upload √ Key password ... ********** Keystore updated successfully Publishing to channel 'default'... |
こういう見た目が変わってるということは、中身は相当変わってるだろうからエラーが出ても仕方ない。
しかしアップデートの for example
に yarn
のアップデートコマンドも追記してほしかった。考えてみれば当たり前だけど盲点をつかれた気がする。