๐ ๏ธ 'EAS CLI๋ฅผ ์ ๋ฐ์ดํธํ๋๋ฐ๋ ์ฌ์ ํ ๊ฒฝ๊ณ ๊ฐ ๋น๋๋ค!' ํฐ๋ฏธ๋ PATH์ ๋น๋ฐ์ค๋ฌ์ด ์ถ
Source: Dev.to
Introduction
Expo Application Services (EAS)๋ฅผ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๊ณ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ณธ ์ ์ด ์๋ค๋ฉด:
โ
eas-cli@16.28.0 is now available. To upgrade, run npm install -g eas-cli. Proceeding with outdated version.
์
๊ทธ๋ ์ด๋ ๋ช
๋ น์ ์คํํ๊ณ , ๊ฐ์ ํฐ๋ฏธ๋์ ์ด์ด ๋ค์ ์คํํ๋๋ฐ ๋๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ๋จ๋ ๊ฒฝ์ฐ, ์ ํ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ ํจ์ ์ ๋น ์ง ๊ฒ์ด๋ค! ์ด ๊ธ์์๋ ์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋์ง์ ๊ฐ๋จํ ํด๊ฒฐ์ฑ
์ธ npx eas-cli build๋ฅผ ์คํํ๋ฉด ์ฆ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ์ด์ ๋ฅผ ์ค๋ช
ํ๋ค.
The Problem: When eas build Fails
์ฌ์ฉ์๋ ์ด๊ธฐ ๋น๋์์ ๋ค์๊ณผ ๊ฐ์ ์์กด์ฑ ์ค๋ฅ๋ก ์คํจํ๋ค:
The 'expo-modules-autolinking' package has been found, but it seems to be incompatible with '@expo/prebuild-config'
Error: build command failed.
์ด ํธํ์ฑ ๋ฌธ์ ๋ **์ต์ ๋ฒ์ ์ eas-cli**๊ฐ ํ๋ก์ ํธ ์์กด์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ํด๊ฒฐํ๋๋ก ํด์ผ ์์ฃผ ๋ฐ์ํ๋ค. ์ฌ์ฉ์๋ ์ฌ๋ฐ๋ฅธ ์
๊ทธ๋ ์ด๋ ๋ช
๋ น์ ์คํํ๋ค:
npm install -g eas-cli
ํ์ง๋ง ๋ค์ ๋น๋๋ฅผ ์๋ํ์ ๋ CLI๋ ์ฌ์ ํ ๊ตฌ๋ฒ์ ์ด๋ผ๊ณ ๊ฒฝ๊ณ ํ๋ค:
cathy@Cathys-MacBook-Air-2 workout_app % eas build --platform ios --profile development
โ
eas-cli@16.28.0 is now available.
To upgrade, run npm install -g eas-cli.
Proceeding with outdated version.
์ด ๋ฃจํ๋ ํผ๋์ค๋ฝ๋ค! ๋๊ตฌ๋ ์ ๋ฐ์ดํธ ๋์์ง๋ง ๋ช ๋ น์ ์ฌ์ ํ ์ ๋ฒ์ ์ ์ฌ์ฉํ๋ค. ์์ผ๊น?
The Root Cause: The Terminalโs PATH Cache
eas build์ ๊ฐ์ ๋ช
๋ น์ ์
๋ ฅํ๋ฉด, ์(zsh ๋๋ bash ๋ฑ)์ eas ์คํ ํ์ผ์ด ์ด๋์ ์๋์ง ๋ชจ๋ฅธ๋ค. ๋์ $PATH ๋ผ๋ ํ๊ฒฝ ๋ณ์์ ์ ์๋ ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก์ ํ์ํ๋ค.
- ์
eas์์น:eas-cli๋ฅผ ์ ์ญ์ผ๋ก ์ฒ์ ์ค์นํ์ ๋, ์์ ํน์ ๊ฒฝ๋ก(์:/usr/local/bin/eas)์์ ์ฐพ์๋ค. - ์ ์บ์: ์๋๋ฅผ ์ํด ํฐ๋ฏธ๋์ ํ์ฌ ์ธ์ ์์ ์ฌ์ฉํ ๋ช ๋ น์ ์์น๋ฅผ ์บ์(๊ธฐ์ต)ํ๋ค.
- ์
๊ทธ๋ ์ด๋:
npm install -g eas-cli๋ฅผ ์คํํ๋ฉด ์๋ก์ด ๋ฐ์ด๋๋ฆฌ๊ฐ ์ข ์ข ๊ฐ์ ์์น์ ์ค์น๋๋ค. - ์ถฉ๋: ๊ทธ๋ฌ๋ ํ์ฌ ์ด๋ ค ์๋ ํฐ๋ฏธ๋ ์ธ์
์ ์ฌ์ ํ ์
eas์คํ ํ์ผ์ ๋ํ ์บ์๋ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ค. ํ์ผ ์์ฒด๋ ๋ฎ์ด์จ์ก๊ฑฐ๋ ์์คํ ์ด ๊ฒฝ๋ก๋ฅผ ์๋ก ๊ณ ์ณ์ผ ํจ์๋ ๋ถ๊ตฌํ๊ณ , ๊ตฌ๋ฒ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
์ด ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ํธ๋ฌ๋ธ์ํ
๋จ๊ณ์ธ ํฐ๋ฏธ๋์ ๋ซ์๋ค๊ฐ ๋ค์ ์ฌ๋ ๊ฒ์ด ๋ณดํต ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค! ์ด๋ ๊ฒ ํ๋ฉด ์์ด ์บ์๋ฅผ ๋น์ฐ๊ณ $PATH๋ฅผ ๋ค์ ์ค์บํ๊ฒ ๋๋ค.
The Elegant Solution: Using npx
์บ์๋ฅผ ์๋๊ฑฐ๋ ํฐ๋ฏธ๋์ ์ฌ์์ํ๋ ๋์ , ํ๋์ ์ธ Node.js ๋๊ตฌ์ธ **npx**๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ขฐํ ์ ์๋ ๋ฐ๋ก๊ฐ๊ธฐ๋ฅผ ์ ๊ณตํ๋ค.
์๋ํ ํด๊ฒฐ์ฑ :
npx eas-cli build --platform ios --profile development
How npx Saves the Day
PATH์ฐํ:npx(Node Package Execute)๋ Node.js ํจํค์ง ์คํ ํ์ผ์ ์คํํ๋๋ก ์ค๊ณ๋์๋ค. ํต์ฌ์ ์์ ์บ์๋PATH๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์ ์ด๋ค.- ์ง๋ฅํ ํด์:
npx eas-cli โฆ๋ฅผ ์คํํ๋ฉด ๋จผ์ ํ๋ก์ ํธ์ ๋ก์ปฌnode_modules์์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฐพ๋๋ค. ์์ ๊ฒฝ์ฐ(์ ์ญ ๋๊ตฌ์ธeas-cli์ ๊ฐ์ ๊ฒฝ์ฐ) ์ฆ์ ์ ์ญ์ ์ค์น๋ ์ต์ ๋ฒ์ ์ ์คํํ๋ค. ํ์ฌ ์ ์ธ์ ์ ๋จ์ ์๋ ์ค๋๋ ์บ์๋ฅผ ๋ฌด์ํ๋ค.
npx๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ
์ ์ค์น๋ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ๋๊ตฌ๋ฅผ ์คํํ๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์์ด, ์ ์บ์์ ํ๊ฒฝ ๋ณ์๋ก ์ธํ ๋ชจ๋ ๊ณจ์น๋ฅผ ํผํ ์ ์๋ค.
Key Takeaways for Developers
- ๊ฐ๋จํ ํด๊ฒฐ์ฑ : ์ ์ญ ๋๊ตฌ๋ฅผ ์ ๋ฐ์ดํธํ ํ ํฐ๋ฏธ๋์ ๋ซ์๋ค๊ฐ ๋ค์ ์ฐ๋ค.
- ์ ๋ขฐํ ์ ์๋ ํด๊ฒฐ์ฑ
: ๋ช
๋ น ์์
npx๋ฅผ ๋ถ์ธ๋ค(์:npx).
๊ณ์ ์ฝ๋ฉํ๊ณ , ์ฆ๊ฑฐ์ด ๋น๋ ๋์ธ์! ๐