Nodo.paquete js.parámetro principal de json


Ya he hecho bastante búsqueda. Sin embargo, todavía tiene dudas sobre el parámetro principal en el paquete.json del nodo.js.

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

Sé que la segunda pregunta es bastante extraña. Es porque he alojado un Nodo.aplicación 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 subproceso. Sin embargo, tienen que conectarse al mismo cartucho MongoDB. Por otra parte, me gustaría ahorrar una marcha si ambos componentes podrían servir en el mismo engranaje si es posible.

Cualquier sugerencia es bienvenida.

Author: Gavin, 2014-03-19

5 answers

De la documentación del mnp :

El campo principal es un ID de módulo que es el punto de entrada principal a su programa. Es decir, si su paquete se llama foo, y un usuario instala y luego requiere ("foo"), luego las exportaciones de su módulo principal objeto será devuelto.

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

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

Para decirlo brevemente:

  1. Solo necesita un parámetro main en su package.json si el punto de entrada de su paquete difiere de index.js en su carpeta raíz. Por ejemplo, la gente a menudo pone el punto de entrada a 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.
 91
Author: bredikhin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-25 21:18:51

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

Digamos que tienes la siguiente estructura de archivos:

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

Sin 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 paquete .json parámetro principal de la siguiente manera "main": "lib/module.js", usted será capaz de cargar el módulo de esta manera: require('my-npm-module').

 27
Author: Bastien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-15 19:49:50

Si tienes por ejemplo en tu archivo package.json:

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

lib/entry.js será el principal punto de entrada a su paquete. Al llamar

require( 'zig-zag' );

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

 12
Author: prosti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-24 18:12:50

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

 6
Author: Akash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-24 05:31:49

Para OpenShift, solo se obtiene un par de PUERTOS e IP para enlazar (por aplicación). Parece que debería poder servir ambos servicios desde una sola instancia de nodejs agregando rutas internas para cada extremo de servicio.

Tengo información sobre cómo OpenShift usa el paquete de su proyecto.json para iniciar su aplicación aquí: https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps#package_json

 0
Author: ʀɣαɳĵ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-27 21:46:22