我有一个自定义的sails.js钩子,该钩子实现了Websocket服务器(我们无法使用内置的socket.js
钩子,因为我们需要匹配旧的API)。
我还有一个自定义的sails run
脚本,可以进行后台处理。
现在,当运行sails run -name-of-my-script
命令时,它还会运行我的钩子,这将为该钩子使用的所有事件提供额外的侦听器。
我想使该挂钩仅在主应用程序启动(sails lift
或等效的node app.js
)上启动,而不在sails run ...
上启动。
我已经仔细阅读了代码和文档,但似乎看不到任何官方的方法。
我可以想到两种选择:
有什么办法可以做这些事情吗?
答案 0 :(得分:0)
目前,尚无内置方法可以执行此操作,因为Sails脚本无法修改配置-它们使用默认sails
实例及其默认设置。
这是我用来使其工作的技巧:
在挂钩的initialize方法中添加对配置选项的检查:
if (app.config.notifier.active === false) {
sails.log.verbose('Notifier disabled');
return cb();
}
// Continue with notifier hook setup here
将设置环境变量添加到脚本顶部(在module.exports
之前:
process.env.sails_notifier__active = false;
(注意:第1步基于this answer,但是链接到那里的软件包不再使用这种技术。该问题和答案也非常古老-至少在Sails.js回答中如此-从{之前{1}}存在。)