¿Cómo ejecutas el script JavaScript a través de la Terminal?

273

Por ejemplo, si tuviera que ejecutar una secuencia de comandos de Python, escribiría python filename.py o si quisiera ejecutar un programa en C, cree filename y luego ./ filename . ¿Cómo se hace esto con archivos .js ?

BLUC
fuente
1
JS no es un lenguaje de propósito general, entonces, ¿por qué querrías hacer esto? Incluya su archivo .js en una página .htm (l) a través de la etiqueta <script>, luego abra la página en su navegador.
helpermethod
3
@BLUC Se llama ejecutable.
helpermethod
ejecutable, aplicación, programa o binario. Y en una nota más útil, necesitará un intérprete de JavaScript, como V8 o Rhino, o uno de los otros 1000 que estoy olvidando.
Corbin
9
@OliverWeiler no es tan fácil de aplicar en situaciones generales como en otros idiomas, pero creo que puede tener aplicaciones fuera de las páginas web :).
Corbin
Una aplicación de JavaScript está en Unity 3D
Bradman175

Respuestas:

124

Necesitaría un motor de JavaScript (como el Rhino de Mozilla ) para evaluar el script, exactamente como lo hace para Python, aunque este último se entrega con la distribución estándar.

Si tiene Rhino (o alternativa) instalado y en su camino, entonces ejecutar JS puede ser tan simple como

> rhino filename.js

Sin embargo, vale la pena señalar que, si bien JavaScript es simplemente un lenguaje en sí mismo, muchos scripts particulares suponen que se ejecutarán en un entorno similar a un navegador, por lo que intente acceder a variables globales como location.hrefy crear resultados agregando Objetos DOM en lugar de llamar print.

Si tiene un script que fue escrito para una página web, es posible que necesite ajustarlo o modificarlo un poco para permitirle aceptar argumentos de stdin y escribir en stdout. (Creo que Rhino tiene un modo para emular los vars globales del navegador estándar que ayuda mucho, aunque no puedo encontrar los documentos para esto ahora).

Andrzej Doyle
fuente
44
FYI, diferencia entre rhino y spidermonkey (ambas son creaciones de Mozilla): stackoverflow.com/questions/3563909/rhino-vs-spidermonkey
Kelvin
3
En Debian / Ubuntu: 'apt-get install rhino' y binario se llama js.
pevik
No sé si sientes lo mismo, pero estoy encontrando a rhyno bastante frágil y con errores ... (ejecutando Ubuntu 14.04)
Ionică Bizău
1
Esto funciona para mí, use print ("msg") para depurar que usar console.log ()
Arefe
392

Otra respuesta sería el NodeJS!

Node.js es una plataforma basada en el tiempo de ejecución de JavaScript de Chrome para crear fácilmente aplicaciones de red rápidas y escalables. Node.js utiliza un modelo de E / S sin bloqueo controlado por eventos que lo hace liviano y eficiente, perfecto para aplicaciones de tiempo real con uso intensivo de datos que se ejecutan en dispositivos distribuidos.

Usando la terminal podrás iniciarlo usando el nodecomando.

$ node
> 2 + 4
6
> 

Nota : Si quieres salir solo escribe

.exit

También puede ejecutar un archivo JavaScript como este:

node file.js

«Instalarlo AHORA»

Ionică Bizău
fuente
@NadirSampaoli Sí, es una tecnología nueva que es realmente genial.
Ionică Bizău
El único inconveniente (si quiere llamarlo así) es que el nodo siempre está en "modo estricto". ¿Es correcto?
Nadir Sampaoli
@NadirSampaoli Hmmm, no estoy seguro. Vea esta pregunta: stackoverflow.com/q/9031888/1420197
Ionică Bizău
11
@NadirSampaoli Dudo que cuente como un "inconveniente". El modo estricto es mejor para todos.
The Paramagnetic Croissant
¿Algún consejo para envolver un javascript en el comando final 'consumidor', al usuario no le tiene que importar? Como en $> sudo apt-get install myFancyCmdseguido de $>myFancyCmd hello.jpg -w 1234?
Frank Nocke
134

Si tiene una Mac , puede obtener jscuna consola javascript en OS X (Terminal) escribiendo

/System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/Resources/jsc

en Terminal.app .

También puede ejecutar uno de sus scripts .js agregando su nombre como argumento para jsc, así:

jsc your_awesome_script_name.js

Aviso : uso console.log()durante el desarrollo, pero jsc necesita la debug()función en su lugar.

En Ubuntu , tiene algunos shells ECMAScript a su disposición. Entre ellos vale la pena mencionar SpiderMonkey . Puedes agregarlo porsudo apt-get install spidermonkey

En Windows, como otras personas dijeron, puede confiar cscripty wscriptconstruir directamente en el sistema operativo.

También agregaría otra forma :) de pensar al problema , si tiene tiempo y desea aprender cosas nuevas, me gustaría mencionar coffee-script que tiene su propio compilador / consola y le brinda un Javascript súper correcto. Puede probarlo también en su navegador (enlace "probar coffeescript").

microspino
fuente
Ubuntu no es compatible con SpiderMonkey desde 10.04. (¿Sabes por qué? Askubuntu.com/q/180572/482285 )
maciek
1
@maciek SpiderMonkey todavía está disponible para Ubuntu pero con otro nombre: packages.ubuntu.com/trusty/libmozjs-24-bin
microspino
1
@maciek ... para que pueda hacer: sudo apt-get install libmozjs-24-biny el uso sudo ln -sf /usr/bin/js24 /usr/bin/jspara usarlo con js en su shell.
microspino
Por cierto console.logfunciona bien con el nodo , instalado en Ubuntu con sudo apt install nodejs. Perfecto para una console.log('hey world, here I am')especie de aplicación, con la que puedes correr node hey.js.
Nagev
30

Use node.js para eso, aquí hay un ejemplo de cómo instalar nodeusando brewmac:

brew update && install node

Luego ejecute su programa escribiendo node filename.js, y puede usarlo console.log()para la salida.

Andrey Bodoev
fuente
Esto va muy bien en combinación con github.com/remy/nodemon que mirará cualquier archivo javascript y lo volverá a ejecutar en cualquier cambio. Así que simplemente ejecútelo con nodemon yourjavascript.js
Denis
44
No quiere decir brew install node? install nodepor sí solo realmente no hará nada.
numbermaniac
11

Es tosco, pero puede abrir la consola Javascript en Chrome (Ctrl + Shift + J) y pegar el contenido del texto del archivo * .js y presionar Enter.

Mark Lakata
fuente
44
En realidad no es tan grosero, y me sorprendió que nadie hablara console.
Eduard Florinescu
11

Si estás usando MacBook.

  1. Configure node.jsen su sistema y abra la terminal
  2. Navegue al directorio, donde se guarda el archivo js.
  3. Para ejecutar ejecutar node <filename.js>

ejemplo, si se script.jsejecuta el nombre del archivonode script.js

Emjey
fuente
1
el nodo está cerca de javascript pero no es exactamente javascript, por ejemplo, javascript no es compatible con el archivo IO, tampoco se requiere la función por defecto; podría no ser una buena manera de probar el archivo JavaScript
Weijing Jay Lin
5

Alternativamente, si solo está buscando jugar con Javascript, una buena opción en el navegador es el Laboratorio Javascript de Codecademy .

También tienen un IDE de Python y Ruby.

fscof
fuente
4

Si está en una PC con Windows, puede usar WScript.exe o CScript.exe

Solo tenga en cuenta que no está en un entorno de navegador, por lo que cosas como document.writeo cualquier cosa que dependa del windowobjeto no funcionarán, como window.alert. En su lugar, puede llamar WScript.Echoa las cosas de salida al indicador.

http://msdn.microsoft.com/en-us/library/9bbdkx3k(VS.85).aspx

Anders Tornblad
fuente
¿Hay uno para Ubuntu, Google Chrome?
BLUC
Deberías haber puesto esa información vital en la pregunta. Lo siento, soy un geek de Windows, no sé mucho sobre Ubuntu. Además, probablemente no tendrá acceso a Google Chrome cuando ejecute javascript desde un indicador de shell de Ubuntu. EDITAR: la respuesta de Andrzej Doyle es el camino a seguir para usted.
Anders Tornblad
4

Intenté investigar eso también, pero en su lugar terminé usando jsconsole.com de Remy Sharp (también creó jsbin.com). Estoy ejecutando Ubuntu 12.10, así que tuve que crear un ícono especial, pero si está en Windows y usa Chrome, simplemente vaya a Herramientas> Crear accesos directos a aplicaciones (tenga en cuenta que esto no funciona muy bien, o en mi caso, en Ubuntu). Este sitio funciona muy parecido a la jscconsola Mac : en realidad también tiene algunas características interesantes (como cargar bibliotecas / código desde una URL) que supongo jscque no.

Espero que esto ayude.

raf
fuente
3

En Ubuntu, instale libjavascriptcoregtk-3.0-bin y use (página de manual ).un enlace para instalar /usr/bin/jsc

Keith Cascio
fuente
Simplificación de Ubuntu 14: sudo apt-get install nodejs; /usr/bin/nodejs foo.js. Tenga en cuenta que es v0.10.25, un poco viejo.
Camille Goudeseune
2

Todas las respuestas anteriores son grandes, veo una cosa que falta y podría ser considerado para el funcionamiento de javascripts(*.js)los archivos, la relación hermano de javascriptla Java.

JDKviene con dos buenas herramientas, podrían ser utilizadas para ejecutar javascripts. Aquí hay comandos como. Asegúrate de navegar a JDK\bin.

 jjs example.js

Viene con otra commmandherramienta que va así:

 jrunscript example.js

Espero que esto pueda ser útil para otros.

Chico rojo
fuente
1

Esta es una solución "indirecta" pero podría usar ipython

Inicie el cuaderno de ipython desde la terminal:

$ ipython notebook

Se abrirá en un navegador donde puede ejecutar JavaScript

ingrese la descripción de la imagen aquí

AlexG
fuente
0

También puede usar phantomjsDescargar phantomjs dependiendo del sistema (mi caso es Max OSX) de phantomjs.org . Debe colocar la ruta a la carpeta de instalación de phantomjs en la parte superior de su archivo javascript. p.ej. #!./bin/phantomjsGuarda tu código. Vaya a la terminal donde se guarda su javascript y puede ejecutar usando> phantomjs filename.js

ewalel
fuente
0

Técnicamente, Node.js no es JavaScript adecuado como lo conocemos, ya que no hay un Modelo de Objetos de Documento (DOM) . Por ejemplo, los scripts de JavaScript que se ejecutan en el navegador no funcionarán. En absoluto. La solución sería ejecutar JavaScript con un navegador sin cabeza. Afortunadamente, hay un proyecto todavía activo: Mozilla Firefox tiene un modo sin cabeza .

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Headless_mode

$ /Applications/Firefox.app/Contents/MacOS/firefox -headless index.html
*** You are running in headless mode.
fragante
fuente
0

Todo lo que tiene que hacer para ejecutar un archivo js a través de bash es escribir: $ node filename.js

Esto es similar a en Python, cuando haces: $ python filename.py

stevestar888
fuente