javascript - que - Error de sintaxis no capturado: en el código de modo estricto, las funciones solo pueden declararse en el nivel superior o inmediatamente dentro de otra función
use strict node (4)
Hola cuando ejecuto este proyecto en modo de desarrollador (servidor de grunt) https://github.com/kennethlynne/generator-angular-xl todo está bien, pero cuando lo ejecuto en modo de producción (grunt build) obtengo un `
Error de sintaxis no capturado: en el código de modo estricto, las funciones solo pueden declararse en el nivel superior o inmediatamente dentro de otra función
¿Alguien tiene alguna idea de lo que está pasando? Gracias,
PD. Publiqué un enlace al proyecto en lugar de código ya que el JS se divide en muchos archivos.
Además de las respuestas correctas, esto también podría ser un error en FireFox en algunos escenarios específicos.
Tuvimos este mensaje de error en la máquina de un solo usuario. En el archivo JavaScript había una línea de use strict
debajo del método que generó este error (que no debería verse afectado por esto)
Resultó ser un problema en la versión 45.9.0 de FireFox (y quizás también en versiones anteriores). La actualización de Firefox a la versión más actual (actualmente 52.4) solucionó el problema.
Como alguien sugirió anteriormente, puede descomentar el ''use strict'';
parte, o incluso mejor, cambiar la sintaxis de su función
en lugar de
function funcName (param) { }
utilizar
funcName = function(param) {};
Es justo lo que dice el mensaje de error:
Las funciones solo se pueden declarar en el nivel superior o inmediatamente dentro de otra función.
No debe colocar una declaración de función dentro de ningún otro bloque, como una sentencia if o un bucle for.
Ejemplo:
''use strict'';
function some() {
function okay() {
}
let x = 1;
function no_problem() {
}
if (x == 1) {
function BOOM() { // <- wrong!
}
}
}
La forma en que resolví el problema fue mediante la eliminación del ''use strict''
que se encontraba por encima del jQuery en el script final finalizado. Otra forma puede ser cambiar la versión de jQuery a una sin el error estricto
EDITAR: Después de todo, se trataba de un error de minificación de jQuery en la versión 1.11, y una solución fácil para esto es ir a su archivo Grunt y comentar la línea.
banner: "''use strict'';/n"