Запускай только мой sails.js крюк на 'sails lift', а не на 'sails run' - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть собственный хук sails.js, который реализует сервер Websocket (мы не можем использовать встроенный хук socket.js, потому что нам нужно было соответствовать старому API).

У меня также естьПользовательский sails run скрипт, который выполняет фоновую обработку.

Прямо сейчас, когда запускается команда sails run -name-of-my-script, он также запускает мой хук, который создает дополнительные прослушиватели для всех событий, используемых этим хуком.

Я хотел бы сделать так, чтобы ловушка запускалась только при запуске основного приложения (sails lift или эквивалент node app.js), а не при sails run ....

Я просмотрел код идокументации, но я не вижу никакого официального способа сделать это.

Я могу придумать два варианта:

  1. В хуке проверьте, является ли скриптвыполняется и не инициализируется.
  2. В скрипте отключите перехват.

Есть ли способ сделать что-либо из этого?

1 Ответ

0 голосов
/ 24 декабря 2018

В настоящее время нет встроенного способа сделать это, потому что сценарии Sails не имеют возможности изменять конфигурацию - они используют экземпляр sails по умолчанию с его настройками по умолчанию.

Вот хак, чтоЯ использовал, чтобы заставить его работать:

  1. Добавить проверку для опции конфигурации в методе инициализации хука:

    if (app.config.notifier.active === false) {
        sails.log.verbose('Notifier disabled');
        return cb();
    }
    
    // Continue with notifier hook setup here
    
  2. Добавить настройкуПеременная среды в верхней части скрипта (до module.exports:

    process.env.sails_notifier__active = false;
    

(Примечание: шаг 1 основан на этот ответ , но пакет связанэта техника больше не используется. Этот вопрос и ответ также очень старые - по крайней мере, таковы ответы Sails.js - до того, как sails run существовал.)

...