2017-05-08 2 views
0

J'obtiens l'erreurInAppBroswer: Uncaught SyntaxError: Déclarations de portée limitée .. pas encore supporté lors du chargement de js sur Android App. en dehors du mode strict

Uncaught SyntaxError: déclarations Bloc-scope (LET, const, fonction, classe) pas encore pris en charge en dehors du mode strict

lorsque le js suivant est ajouté à la tête html,

; 
;frappe.socket = { 
    open_tasks: {}, 
    open_docs: [], 
    emit_queue: [], 
    ... 
    doc_open: function(doctype, docname) { 
     "use strict"; 
     if (!frappe.socket.last_doc || (frappe.socket.last_doc[0] != doctype && frappe.socket.last_doc[0] != docname)) { 
      frappe.socket.socket.emit('doc_open', doctype, docname); 
     } 
     frappe.socket.last_doc = [doctype, docname]; 
    }, 
    ... 
} 

Note J'ai ajouté "use strict"; basé sur les threads de stackoverflow existants. Je reçois toujours l'erreur. Le débogueur chrome pointe sur la ligne ci-dessous.

 frappe.socket.last_doc = [doctype, docname]; 

Le navigateur est une application cordova exécutée dans Android Studio Emulator. Je pense qu'il utilise InAppBrowser. Le js restant ne se charge pas après cette erreur. Je ne suis pas sûr quel code a besoin du mode strict.

Le même code fonctionne très bien sans "use strict" dans chrome, Edge, FF.

Répondre

0

Problème trouvé: Même si la fenêtre Google Chrome Developer affichait cette ligne, cette ligne était la première déclaration de la ligne JS minifiée.

En regardant la ligne complète minified JS, je trouve la question est dans une autre ligne plus tard,

frappe.socket.file_watcher.on('reload_css', function(filename) { 
    let abs_file_path = "assets/" + filename; 

Ajout d'un « use strict au début de cette fonction fixe la question -.