Android 安格拉斯抛出;意外严格模式保留字“;这会导致应用程序崩溃

Android 安格拉斯抛出;意外严格模式保留字“;这会导致应用程序崩溃,android,html,angularjs,cordova,strict,Android,Html,Angularjs,Cordova,Strict,我目前正在使用angularJS和cordova 3.2开发一个手机应用程序 我的一些玩家报告说,应用程序没有在他们的设备上启动。下面列出了这些设备 optimus p880(Android版本4.0.3) Lifetab von Medion(Adroid版本4.0.3) 索尼爱立信Xperia mini pro(安卓4.0.4) 所以它似乎与Android版本4.0.3/4有某种联系 不启动意味着cordova应用程序正在启动,但angularjs在启动之前崩溃,因为附加了ng-Clop

我目前正在使用angularJS和cordova 3.2开发一个手机应用程序

我的一些玩家报告说,应用程序没有在他们的设备上启动。下面列出了这些设备

  • optimus p880(Android版本4.0.3)
  • Lifetab von Medion(Adroid版本4.0.3)
  • 索尼爱立信Xperia mini pro(安卓4.0.4)
所以它似乎与Android版本4.0.3/4有某种联系

不启动意味着cordova应用程序正在启动,但angularjs在启动之前崩溃,因为附加了
ng-Clope
类的所有元素(在我的例子中,它是为完整的根窗口设置的)都保持隐藏状态。所以用户看不到任何东西

问题是,我没有任何这样的设备来测试它,但是一个玩家确实给我发了他的设备的日志,说

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();
      }
    }
  }
(#3878)
函数createInternalInjector(缓存,工厂){
函数getService(serviceName){
if(cache.hasOwnProperty(serviceName)){
if(缓存[serviceName]==实例化){

抛出$InjectorMiner('cdep','Circular dependency found:{0}',path.join('对于我们来说,这只在Android 4.0.4 Galaxy S2股票浏览器(和应用程序web视图)上抛出,可以通过从我们的app.js中删除
'use strict;'
来解决

我通过console.logging值
fn.toString().substring(0150)找到了有问题的代码
在angular.js
annotate
函数中,并在股票浏览器中点击
about:debug
后检查Weinre中的日志,这将启用股票浏览器上的控制台。这可能有助于您跟踪自己代码中的问题行。可能不是每个人都在
annotate()中得到错误
步骤。您应该在控制台日志中看到该行

Galaxy S3拥有完全相同的操作系统和浏览器,这很好…如图所示


仍然在寻找一种方法让
“严格使用”;
在那里不出现错误。将整个事情包装在一个生命中并没有达到目的,在这种情况下仍然会出现错误。

没有主意?这对我来说真的是个阻碍,我想找到一个解决方案!你的服务的名称是什么?我在尝试命名时遇到过这个错误具有(未来)保留字的函数。您可能也有相同的保留字。不要因此而删除
'use strict'
指令。我到目前为止还没有找到解决方案,我只是删除了我所有文件中的
'use strict'
。。。