Estoy trabajando con Node.js, y en una de mis archivos js que estoy usando const
en "strict mode"
. Cuando intento ejecutarlo, recibo un error:
SyntaxError: Use of const in strict mode.
¿Cuál es la mejor práctica para hacer esto?
Editar:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
javascript
node.js
Vivek P
fuente
fuente
var
. Añadir semikolon'use strict';
Respuestas:
Los
const
ylet
son parte de ECMAScript 2015 (también conocido como ES6 y Harmony), y no se habilitó de forma predeterminada en Node.js 0.10 o 0.12. Desde Node.js 4.x, "Todas las funciones de envío [ES2015], que V8 considera estable, están activadas de forma predeterminada en Node.js y NO requieren ningún tipo de indicador de tiempo de ejecución". Node.js docs tiene una descripción general de qué funciones de ES2015 están habilitadas de manera predeterminada y cuáles requieren un indicador de tiempo de ejecución . Entonces, al actualizar a Node.js 4.xo posterior, el error debería desaparecer.Para habilitar algunas de las características de ECMAScript 2015 (incluyendo
const
ylet
) en Node.js 0.10 y 0.12; inicie su programa de nodo con un indicador de armonía, de lo contrario obtendrá un error de sintaxis. Por ejemplo:Todo depende de qué lado se encuentre tu js estricto. Recomendaría usar el modo estricto con
const
declaraciones en el lado del servidor e iniciar el servidor con la bandera de armonía. Para el lado del cliente, debe usar Babel o una herramienta similar para convertir ES2015 a ES5, ya que no todos los navegadores de clientes admiten lasconst
declaraciones.fuente
'use strict';
úselo, pero deje que el código de terceros decida por sí mismo.Si esto sucede en nodejs, se debe a la versión anterior de nodejs. Actualizar nodo utilizando,
1) Borrar el caché de NPM:
2) Instale un pequeño ayudante llamado 'n'
3) Instale la última versión estable de NodeJS
Actualice las instrucciones de nodejs tomadas de https://stackoverflow.com/a/19584407/698072
fuente
node
versión. Por ejemplo, al momento de escribir esto,sudo n 6.9.4
instalará el último LTS, dondesudo n stable
se instalará7.4.0
. Obviamente, ese es un cambio radical, así que ten cuidadon stable
. Alternativamente,sudo n lts
instala el LTS más reciente.Por lo general, este error ocurre cuando la versión del nodo en el que se ejecuta el código es anterior a la esperada. (es decir, 0,12 o más).
si está utilizando nvm, asegúrese de tener la versión correcta del nodo que está utilizando. Puede verificar la compatibilidad en node.green para const en modo estricto
Encontré un problema similar en otra publicación y publiqué mi respuesta allí en detalle
fuente
/usr/bin/node
carpeta, que tenía 0.10.46.Un paso importante después de actualizar su nodo es vincular su nodo binario a la última versión de nodo instalada
fuente
which node
node --version
imprime el número de versión, por ejemplov0.10.29
Probablemente esta no sea la solución para todos, pero fue para mí.
Si está utilizando NVM, es posible que no haya habilitado la versión correcta del nodo para el código que está ejecutando. Después de reiniciar, su versión predeterminada del nodo vuelve a ser la predeterminada del sistema.
Me encontraba con esto cuando trabajaba con react-native que había estado funcionando bien. Simplemente use nvm para usar la versión correcta del nodo para resolver este problema.
fuente
nvm use version-number-you-need
es todo lo que tienes que hacerDesde el momento en que se hizo la pregunta, el borrador de la
const
palabra clave ya es un estándar de vida como parte de ECMAScript 2015 . Además, la versión actual de Node.js admite declaraciones constantes sin el--harmony
bandera.Con lo anterior, ahora puede ejecutar
node app.js
, conapp.js
:obteniendo tanto el azúcar de sintaxis como los beneficios del modo estricto.
fuente
MB
es una potencia de diez, mientras que un mebibyteMiB
es una potencia de dos. es decir1MB = 1e6
y1MiB = 1024 * 1024
. Ver wikipedia: MebibyteTuve un problema similar recientemente y terminé en estas preguntas y respuestas. Esta no es la solución que estaba buscando el OP, pero puede ayudar a otros con un problema similar.
Estoy usando PM2 para ejecutar un proyecto y en un servidor de ensayo determinado tenía una versión muy antigua de Node, NPM y PM2. Actualicé todo, sin embargo, seguí manteniendo el mismo error:
Traté de detener e iniciar la aplicación varias veces. También trató de actualizar todo de nuevo. Nada funcionó. Hasta que noté una advertencia cuando corrí
pm2 start
:Gotcha! Después de ejecutar
pm2 update
, finalmente pude hacer que la aplicación se ejecutara como se esperaba. Ya no hay errores de "const en modo estricto".fuente
const no es compatible con ECMAScript. Entonces, después de especificar el modo estricto, obtiene un error de sintaxis. Debe usar var en lugar de const si desea que su código sea compatible con todos los navegadores. Lo sé, no es la solución ideal, pero es lo que es. Hay formas de crear propiedades de solo lectura en JavaScript (consulte ¿Se pueden implementar las propiedades de solo lectura en JavaScript puro? ), Pero creo que puede ser excesivo dependiendo de su escenario.
A continuación se muestra la nota de compatibilidad del navegador de MDN :
Compatibilidad del navegador
fuente
const
es compatible con ECMAScript 6 y es ampliamente compatible: kangax.github.io/compat-table/es6/#const Pero tiene razón en su respuesta,'use strict';
yconst
no se mezcla.const
se puede volver a declarar en Safari 7 pero no en Opera 21, Chrome 35 y Firefox 29.El uso de
const
en modo estricto está disponible con el lanzamiento de Chrome 41. Actualmente, Chrome 41 Beta ya está disponible y lo admite.fuente
fuente
npm install -g nave; nave use 6.11.1
+1