¿Cómo verificar si un script se está ejecutando en Node.js o no?

En JavaScript, no hay ninguna función o método específico para obtener el entorno en el que se ejecuta el script. Pero podemos hacer algunas comprobaciones para identificar si un script se está ejecutando en Node.js o en el navegador.

Uso de la clase de proceso en Node.js: cada proceso de Node.js tiene un conjunto de funciones integradas, accesibles a través del módulo de proceso global. No es necesario que se requiera el módulo de proceso : es, literalmente, un contenedor del proceso que se está ejecutando actualmente, y muchos de los métodos que expone son en realidad contenedores de llamadas a las bibliotecas principales de C.

Fragmento de código:

if ((typeof process !== 'undefined') && 
(process.release.name.search(/node|io.js/) !== -1)) {
    console.log('this script is running in Node.js');
} else {
    console.log('this script is not running in Node.js');
}

En este fragmento de código, todo lo que estamos haciendo es verificar si el módulo de proceso existe o no. Si el proceso no está indefinido, debemos verificar si la propiedad de nombre del método de liberación en la clase de proceso es Node o io.js (para versiones io.js del Node).

Uso del módulo en Node.js: esta es la solución generalmente aceptada que también se usa en la biblioteca underscore.js. Esta técnica en realidad está perfectamente bien para el lado del servidor, ya que cuando se llama a la función require , restablece este objeto a un objeto vacío y redefine el módulo para usted nuevamente, esto significa que no tiene que preocuparse por ninguna manipulación externa. . Mientras su código esté cargado con require, estará a salvo.

Fragmento de código:

if (typeof module !== 'undefined' && module.exports) {
    console.log('this script is running in Node.js');
} else {
    console.log('this script is not running in Node.js');
}

Sin embargo, esto falla en el navegador, ya que cualquiera puede definir fácilmente un módulo para que parezca que es el objeto que está buscando. Por un lado, este podría ser el comportamiento que desea, pero también dicta qué variables puede usar el usuario de la biblioteca en el ámbito global. Tal vez alguien quiera usar una variable con el módulo nombrado que tiene exportaciones dentro para otro uso.

Pasos para ejecutar el código con Node.js:

  1. Cree un archivo index.js con el código anterior.
  2. Ejecute el archivo en la Terminal con el siguiente comando:
    node index.js

    Producción:

    Salida del programa en Node.js

Pasos para ejecutar el código en el navegador:

  1. Cree un archivo index.js con el código anterior.
  2. Cree otro archivo index.html en el mismo directorio con el siguiente código:

    <!DOCTYPE html>
    <html>
    <head>
        <title>GFG</title>
        <script src="./index.js"></script>
    </head>
    <body>
        <h3>
            How to check whether a script is 
            running under Node.js or not?
        </h3>
    </body>
    </html>
  3. Para ejecutar el código, haga doble clic en index.html y se abrirá en el navegador.
  4. Abra la consola del navegador para verificar la salida.

    Producción:

    Salida del programa en el navegador

Conclusión: puede usar cualquiera de los métodos anteriores para determinar si su secuencia de comandos se ejecuta en Node o no. Pero el problema de tratar de averiguar qué entorno está ejecutando su código es que cualquier objeto se puede modificar y volver a declarar, lo que hace que sea casi imposible averiguar qué objetos son nativos del entorno y cuáles han sido modificados por el programa.

Publicación traducida automáticamente

Artículo escrito por bhuwan7779 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *