No support for Titanium.Database in MobileWeb environment

3.2.2.GA, Alloy 1.4.0-dev, Mavericks, IOS 7.1, iPhone 4s

일단 제 아이폰에서 생기는 문제입니다. Alloy의 model 관련 샘플들 중 하나 가져와서 어떤 수정도 없이 바로 appify를 한 후 디바이스에 배포해보면 server 로그에

[ERROR] [iphone, 7.1, 10.1.1.6] No support for Titanium.Database in MobileWeb environment.
[ERROR] [iphone, 7.1, 10.1.1.6] TypeError: ‘undefined’ is not an object (evaluating ‘__p.require(“alloy/models/” + ucfirst(name)).Collection’)

이렇게 뜨고 실행이 안되네요. alloy 소스를 받아서 디버깅을 해보니 Ti.Database에 아무값도 내려오지 않더군요… 에뮬레이터는 잘 작동하고요…

혹시 이런 경험 하신분 있으신가요?

(참고로 appify 하지 않은 소스는 디바이스에서 정상적으로 작동합니다.)

엇! 제가 댓글을 단다고 달았는데 안달렸었군요.^^ 다시 붙여 넣어요. ㅎ


tishadow appify 해서 디바이스 넣었는데 해당 메소드나 변수가 없다고 하는 경우 타이타늄 빌드 될때 해당 모듈이 포함되지 않는 경우에요. 최근 tishadow에서는 이 것과 관련되서 코드가 변경이 몇번 있었죠. tishadow를 최신으로 다시 설치해서 진행해보세요. 그래도 안될경우에는 appify해서 생성된 프로젝트 Resources/api/includes.js 에 해당하는 메소드가 있는지 확인하시고 없다면 추가해주세요. (누락된게 있다면 tishadow에 pull request까지 해주면 좋겠죠.ㅋ)

이런 문제가 발생하는 이유는 디바이스에 넣을 경우 test 환경으로 빌드하는데 test환경이나 production 환경에서는 앱 용량을 줄이기 위해 실제 사용하는 모듈만 포함시킵니다. tishadow는 특성상 모든 것을 포함시키기 위한 일종의 꼼수가 필요한거죠. 이런 방법이 ti hook을 통해 최근에 해결했는데 그게 요즘 정상작동 안해서 다시 이전 상태로 복원했어요.

관련 이슈는

사이트가 잠시 내려가있어서 답변을 못 달았었는데 종은님 이야기대로 Includes.js의 문제더군요… github에서 소스를 가지고와 빌드를 해봐도 마찬가지이길래 Includes에 Ti.Database를 추가하니 정상적으로 되더라고요… pull request 준비중입니다. 그래봤자 한줄이긴 하지만… :slight_smile:

땡큐요!!

저도 그런 한줄 request 종종 해요.ㅋㅋ 그것도 다른 분들의 삽질 줄이는데 도움이 되니까요.ㅋㅋ^^

tishadow를 보니 includes.js 를 다시 추가하면서 예전 버전을 넣은 것 같네요. 현재 문제가 좀 있어요. 시간날때 정리해서 저도 pull request 날려야겠어요. ㅠ