nodejs node create await async javascript node.js rest asynchronous openshift

javascript - create - node js rest client promise



ParĂ¡metro principal de Node.js package.json (5)

Ya hice bastante búsqueda. Sin embargo, todavía tengo dudas sobre el parámetro principal en package.json de Node.js.

  1. ¿Cómo ayuda el llenado en este campo? Preguntando de otra manera, ¿puedo comenzar el módulo con un estilo diferente si este campo se presenta?
  2. ¿Puedo tener más de un script en el parámetro principal? En caso afirmativo, ¿comenzarían como dos hilos? Si no, ¿cómo puedo iniciar dos scripts en un módulo y hacer que se ejecuten en paralelo?

Sé que la segunda pregunta es bastante extraña. Es porque he alojado una aplicación Node.js en OpenShift pero la aplicación consta de dos componentes principales. Una es una API REST y otra es un servicio de entrega de notificaciones.

Me temo que el proceso de entrega de notificaciones bloquearía la API REST si se implementaran como un solo hilo. Sin embargo, tienen que conectarse al mismo cartucho MongoDB. Además, me gustaría guardar una marcha si, de ser posible, los dos componentes podrían servir con la misma marcha.

Cualquier sugerencia es bienvenida.


De la documentación npm :

El campo principal es un ID de módulo que es el punto de entrada principal para su programa. Es decir, si su paquete se llama foo, y un usuario lo instala, y luego requiere ("foo"), se devolverá el objeto de exportación de su módulo principal.

Esto debería ser un ID de módulo relativo a la raíz de su carpeta de paquete.

Para la mayoría de los módulos, tiene más sentido tener un script principal y, a menudo, no mucho más.

Para decirlo brevemente:

  1. Solo necesita un parámetro main en su package.json si el punto de entrada a su paquete difiere de index.js en su carpeta raíz. Por ejemplo, las personas a menudo ponen el punto de entrada en lib/index.js o lib/<packagename>.js , en este caso el script correspondiente debe describirse como main en package.json .
  2. No puede tener dos scripts como main , simplemente porque el punto de entrada require(''yourpackagename'') debe definirse sin ambigüedades.


Para responder a su primera pregunta, la forma de cargar un módulo depende del punto de entrada del módulo y del parámetro principal del paquete.json .

Supongamos que tiene la siguiente estructura de archivos:

my-npm-module |-- lib | |-- module.js |-- package.json

Sin el parámetro principal en el paquete.json , debe cargar el módulo dando el punto de entrada del módulo: require(''my-npm-module/lib/module.js'') .

Si configura el parámetro principal package.json como sigue "main": "lib/module.js" , podrá cargar el módulo de esta manera: require(''my-npm-module'') .


Si tiene, por ejemplo, en su archivo package.json :

{ "name": "zig-zag", "main": "lib/entry.js", ... }

lib/entry.js será el principal punto de entrada a su paquete. Cuando llamas

require( ''zig-zag'' );

en el nodo, lib/entry.js será el archivo real que se requiere.


Una función importante de la clave main es que proporciona la ruta para su punto de entrada. Esto es muy útil cuando se trabaja con nodemon . Si trabajas con nodemon y defines la clave main en tu package.json como digamos "main": "./src/server/app.js" , entonces simplemente puedes subir el servidor al tipear nodemon en la CLI con root como pwd en lugar de nodemon ./src/server/app.js .