2014-06-23 1 views
1

현재 angularJS 및 cordova 3.2를 사용하는 휴대 전화 용 응용 프로그램을 개발 중입니다.Angularjs가 응용 프로그램을 중단시키는 "예기치 않은 엄격 모드 예약어"를 던졌습니다.

일부 플레이어는 응용 프로그램이 장치에서 시작하지 않는다고보고합니다. 이 장치는 다음과 같습니다.

  • 옵티머스 P880 (안드로이드 버전 4.0.3)
  • Lifetab 폰 메디온 (Adroid 버전 4.0.3)
  • 소니 에릭슨 엑스 페리아 미니 프로 (안드로이드 4.0.4) 그래서 그것을

어떻게 든 그 안드로이드 버전 4.0.3/4에 연결되어 보인다.

은 코르도바 응용 프로그램이 시작되는 수단을 시작하지,하지만 (내 경우 전체 루트 윈도우 설정)을 ng-cloak 클래스가 부착 된 모든 요소가 숨겨져 남아 있기 때문에이 시작되기 전에 그 충돌을 AngularJS와. 따라서 사용자는 아무 것도 볼 수 없습니다.

문제는 내가 그것을 테스트하기 위해이 장치 중 원하는 장치를하지 않아도,하지만 하나의 플레이어는 행 번호와 파일 이름으로

Uncaught SyntaxError: Unexpected strict mode reserved word 

말, 나에게 그의 장치의 로그를 보내했다 문제는 아래 코드 (3878 줄의 angular.js v1.2.16 파일에 있음)로 인해 발생한다고 판단 할 수 있습니다. 문제는 여기에 무슨 문 throw err;

(#3878) 
function createInternalInjector(cache, factory) { 

    function getService(serviceName) { 
    if (cache.hasOwnProperty(serviceName)) { 
     if (cache[serviceName] === INSTANTIATING) { 
     throw $injectorMinErr('cdep', 'Circular dependency found: {0}', path.join(' <- ')); 
     } 
     return cache[serviceName]; 
    } else { 
     try { 
     path.unshift(serviceName); 
     cache[serviceName] = INSTANTIATING; 
     return cache[serviceName] = factory(serviceName); 
     } catch (err) { 
     if (cache[serviceName] === INSTANTIATING) { 
      delete cache[serviceName]; 
     } 
     throw err; /*** THE ERROR APPLIES HERE! **/ 
     } finally { 
     path.shift(); 
     } 
    } 
    } 

정말 말할 수 없습니다, 적용 할 것으로 보인다. 응용 프로그램은 다른 장치 및 기타 안드로이드 버전에서 잘 작동합니다.

플레이어들에게 어떻게 문제를 해결할 수 있었는지 아는 사람이 있습니까?

+0

아이디어가 없습니까? 그게 나를 위해 정말 차단하고, 나는 해결책을 얻고 싶습니다! – Sebastian

+0

서비스 이름은 무엇입니까? (미래의) 예약어로 함수의 이름을 짓려고했을 때이 오류가 발생했습니다. 당신은 아마 같을 겁니다. 이 때문에''strictly'' 지시어를 제거하지 마십시오. –

답변

1

Android 4.0.4 Galaxy S2 Stock Browser (및 앱 웹보기)에서만 발생하며 app.js에서 'use strict;'을 삭제하면 해결할 수 있습니다.

은 내가 angular.js annotate 기능의 값 fn.toString().substring(0,150)을 console.logging 및 주식 브라우저에서 콘솔을 가능 증권 브라우저에서 about:debug 타격 후 Weinre의 로그를 검사하여 잘못된 코드를 추적. 코드에서 문제가되는 행을 추적하는 데 도움이 될 수 있습니다. annotate() 단계에서 모든 사람에게 오류가 표시되는 것은 아닙니다. 콘솔 로그에 그 행이 표시되어야합니다.

정확히 같은 OS와 브라우저를 가진 Galaxy S3 ... 괜찮아요.

여전히 'use strict';이 있고 오류가 발생하지 않는 방법을 찾고 있습니다. IIFE에있는 모든 것을 감싸는 것은 그 트릭을하지 않았고 그 경우에도 여전히 오류를 얻었습니다.

+0

지금까지 해결책을 찾지 못했습니다. 모든 파일에서''use strict''을 제거했습니다 ... – Sebastian