ionic cordova emulate 실행 시 Cannot read property 'replace' of undefined 에러 해결하기

ionic cordova emulate 실행 시 Cannot read property 'replace' of undefined 에러 해결하기

** BUILD SUCCEEDED **

Error: Cannot read property 'replace' of undefined

[ERROR] Cordova encountered an error.
        You may get more insight by running the Cordova command above directly.

[ERROR] An error occurred while running cordova emulate ios (exit code 1).

ionic cordova emulate 에러

위 문제는 ionic 에서 빌드는 문제없이 성공했지만, 시뮬레이터로 코드를 실행할때 발생하는 문제이다. ionic에서 명령어로 iOS 시뮬레이터로 코드를 설치하고 실행하는데 ios-sim 을 사용하는데 ios-sim에서 발생하는 문제이다.

update ios-sim

이 에러의 문제의 원인은 ionic 내부에서 사용하는 ios-sim 의 버전 문제일 가능성이 크다. 현재 ionic 프로젝트에 사용되는 ios-sim의 버전을 확인해보자. ionic 프로젝트에서 각 플랫폼에 해당하는 코드는 platforms 밑에 생성이 된다. ios에 관련된 node 라이브러리들은 ./platforms/ios/cordova/node_modules 안에 자동으로 설치되는데 이 곳에 설치된 ios-sim 버전을 다음과 같이 확인해보자.

cd ./platforms/ios/cordova  
npm list ios-sim  

ios-sim 로컬 설치 버전 확인

현재 ionic 프로젝트 로컬에 설치된 버전이 ios-sim@5.0.12 인것을 확인 할 수 있다. 이 글을 작성할 때의 ios-sim 최신버전은 ios-sim@6.0.0 이다. 최신 버전으로 재설치한다.

npm install ios-sim  

npm 재설치 로그에 몇가지 경고가 보이는데 cordova 디렉토리 안에 package.json 이 없다는 경고이다. 보통은 패키지 관리를 package.json으로 하지만 ionic 프로젝트에서는 플랫폼에 해당하는 패키지를 자동으로 설치해주는 것이기 때문에 해당 디렉토리 안에 따로 package.json 이 없어서 경고가 나타나는 것이다. 따로 패키지를 관리하지 않는한 크게 문제되지 않으니 그냥 진행하도록 한다. ios-sim 을 최신 버전으로 재설치가 되었는지 확인해보자.

npm list ios-sim  

ios-sim 버전이 ios-sim@6.0.0 으로 재설치 된 것을 확인할 수 있다. 이젠 ionic 프로젝트 룩트 디렉토리로 이동하여 다시 시뮬레이터에 런칭시켜보자.

cd ../../../  
ionic cordova emulate iOS  

ios-sim@5.0.12 버전이 설치되어 있을 때 났던 오류들이 ios-sim@6.0.0 설치 이후 보이지 않고 정상적으로 iOS simulator에 런칭이 되었다. iOS simulator를 열어서 확인하면 ionic 으로 만든 앱이 설치되어 실행되는 것을 확인할 수 있다.