只有 运行 我的 sails.js 挂钩在 `sails lift` 上,而不是 `sails 运行`
Only run my sails.js hook on `sails lift`, not `sails run`
我有一个实现 Websocket 服务器的自定义 sails.js 挂钩(我们不能使用内置的 socket.js
挂钩,因为我们需要匹配旧的 API)。
我还有一个执行后台处理的自定义 sails run
脚本。
现在,当 sails run -name-of-my-script
命令是 运行 时,它也 运行 我的钩子,它为这个钩子使用的所有事件创建额外的监听器。
我想让挂钩仅在主应用程序启动时启动(sails lift
或等效的 node app.js
),而不是在 sails run ...
.
我已经查看了代码和文档,但我似乎看不到任何官方方法可以做到这一点。
我能想到两个方案:
- 在挂钩中,检查脚本是否正在运行并且不初始化。
- 在脚本中,禁用钩子。
有什么方法可以做到这两点吗?
现在,没有内置的方法来执行此操作,因为 Sails 脚本无法修改配置 - 它们使用默认的 sails
实例及其默认设置。
这是我用来让它工作的技巧:
在钩子的初始化方法中添加对配置选项的检查:
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 答案 - - 在 sails run
存在之前。)
我有一个实现 Websocket 服务器的自定义 sails.js 挂钩(我们不能使用内置的 socket.js
挂钩,因为我们需要匹配旧的 API)。
我还有一个执行后台处理的自定义 sails run
脚本。
现在,当 sails run -name-of-my-script
命令是 运行 时,它也 运行 我的钩子,它为这个钩子使用的所有事件创建额外的监听器。
我想让挂钩仅在主应用程序启动时启动(sails lift
或等效的 node app.js
),而不是在 sails run ...
.
我已经查看了代码和文档,但我似乎看不到任何官方方法可以做到这一点。
我能想到两个方案:
- 在挂钩中,检查脚本是否正在运行并且不初始化。
- 在脚本中,禁用钩子。
有什么方法可以做到这两点吗?
现在,没有内置的方法来执行此操作,因为 Sails 脚本无法修改配置 - 它们使用默认的 sails
实例及其默认设置。
这是我用来让它工作的技巧:
在钩子的初始化方法中添加对配置选项的检查:
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 答案 - - 在 sails run
存在之前。)