Подтвердить что ты не робот

Node.js Основной параметр package.json

Я уже довольно много искал. Однако, все еще сомневаясь в главном параметре в package.json Node.js.

  • Как будет заполняться в этом поле? Запрашивая по-другому, могу ли я запустить модуль в другом стиле, если это поле представлено?
  • Можно ли добавить в основной параметр более одного скрипта? Если да, будут ли они запускаться как два потока? Если нет, как я могу запустить два сценария в модуле и запустить их параллельно?

Я знаю, что второй вопрос довольно странный. Это связано с тем, что я принял приложение Node.js на OpenShift, но приложение состоит из двух основных компонентов. Один из них - REST API, а один - служба доставки уведомлений.

Я боюсь, что процесс доставки уведомлений заблокировал бы REST API, если бы они были реализованы как один поток. Однако они должны подключаться к одному картриджу MongoDB. Кроме того, я хотел бы сохранить одну передачу, если оба компонента могут служить на одной передаче, если это возможно.

Любые предложения приветствуются.

4b9b3361

Ответ 1

Из документации npm:

Основное поле - это идентификатор модуля, который является основной точкой входа в ваш программа. То есть, если ваш пакет называется foo, а пользователь устанавливает он, а затем требует ( "foo" ), тогда ваш основной модуль экспортирует объект будет возвращен.

Это должен быть идентификатор модуля относительно корня вашего пакета папку.

Для большинства модулей наиболее целесообразно иметь основной script и часто не намного больше.

Короче говоря:

  • Вам нужен только параметр main в package.json, если точка входа в ваш пакет отличается от index.js в корневой папке. Например, люди часто помещают точку входа в lib/index.js или lib/<packagename>.js, в этом случае соответствующий script должен быть описан как main в package.json.
  • Вы не можете иметь два сценария как main, просто потому, что точка входа require('yourpackagename') должна быть однозначно определена.

Ответ 2

Чтобы ответить на ваш первый вопрос, способ загрузки модуля зависит от точки входа модуля и основного параметра package.json.

Скажем, у вас есть следующая файловая структура:

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

Без основного параметра в package.json вам необходимо загрузить модуль, указав точку входа модуля: require('my-npm-module/lib/module.js').

Если вы установите основной параметр package.json следующим образом "main": "lib/module.js", вы сможете загрузить модуль следующим образом: require('my-npm-module').

Ответ 3

Если у вас есть, например, файл package.json:

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

lib/entry.js будет основной точкой входа в ваш пакет. При вызове

require( 'zig-zag' );

в node, lib/entry.js будет фактическим файлом, который требуется.

Ответ 4

Одна важная функция ключа main заключается в том, что она предоставляет путь для вашей точки входа. Это очень полезно при работе с nodemon. Если вы работаете с nodemon и вы определяете ключ main в package.json, как можно сказать "main": "./src/server/app.js", то вы можете просто запустить сервер с вводом nodemon в CLI с корнем в качестве pwd вместо nodemon ./src/server/app.js.

Ответ 5

Для OpenShift вы получаете только одну пару PORT и IP для привязки (для каждого приложения). Похоже, вы должны иметь возможность обслуживать обе службы из одного экземпляра nodejs, добавляя внутренние маршруты для каждой конечной точки обслуживания.

У меня есть информация о том, как OpenShift использует ваш проект package.json для запуска вашего приложения здесь: https://www.openshift.com/blogs/run-your-nodejs-projects-on-openshift-in-two-simple-steps#package_json