Можно ли «разделить» функции между несколькими серверами Node.js express? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть два отдельных сервера node.js express, работающих на разных портах.

  • на порту 5000 работает API аутентификации, который обрабатывает регистрацию, вход в систему и проверку сеанса.
  • на порту 6000 работает API продукта, который обрабатывает операции CRUD для продуктов.

Когда я создаю новый продукт, я хотел бы проверить токен, найденный в заголовке запроса, поэтому вместо этого копирования через метод проверки сеанса из API авторизации, я импортировал его, но по какой-то причине при запуске приложения получаю эту ошибку в консоли: Error: listen EADDRINUSE: address already in use :::5000

API авторизации экспортирует метод:

export const verifySessionToken = async (sToken: string) => { ... }

API продуктов импортирует метод:

import { verifySessionToken } from '../../../auth/common/verify-session';

Если я закомментирую импорт сверху, приложение запустится снова.

Можно ли импортировать методы из приложения узла, работающие на разных портах? Если да, то как правильно это сделать?

Миллион благодарностей!

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Во-первых, вы импортируете функции из модулей. Вы не импортируете методы с серверов. И совершенно возможно импортировать одну и ту же функцию для использования на двух отдельных серверах либо в одном процессе nodejs, либо в разных процессах nodejs. Процесс импорта чего-либо из модуля не имеет абсолютно ничего общего с сервером или портом, на котором работает сервер. Вы просто импортируете ссылку на функцию из файла, который вы можете вызвать позже.

Вам нужно убедиться, что ваш код правильно модулирован, чтобы в процессе импорта функции не было непреднамеренной стороны такие эффекты, как попытка запустить другой сервер, который вы не хотите запускать. Итак, возможно, ваша функция не модульна должным образом (вставлена ​​в отдельный разделяемый модуль)?

Можно ли импортировать методы из приложений узла, работающих на разных портах? Если да, то как правильно это сделать?

Да. Это очень просто, если вы правильно создадите свой модуль и убедитесь, что он не имеет нежелательных побочных эффектов. Если вы покажете нам весь модуль, из которого вы импортируете, мы, вероятно, сможем помочь вам определить, что вы делаете неправильно.

FYI, просто укажите это:

export const verifySessionToken = async (sToken: string) => { ... }

в его собственный файл, в который оба места, которые хотят его использовать, могут затем импортировать его.

0 голосов
/ 10 июля 2020

Я не думаю, что вы можете запустить два сервера с одинаковыми файлами. Почему бы вам просто не воспроизвести свою функцию в другом приложении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...