挂钩太长时间加载

N.A*_*N.A 22 sails.js

我正在使用两个带风帆的数据库适配器.

一个用于mondoDB,第二个用于mysql.whenever我运行命令"sails lift".once它给出了一个错误

error: Error: The hook `orm` is taking too long to load.
Make sure it is triggering its `initialize()` callback, or else set       `sails.config.orm._hookTimeout to a higher value (currently 20000)
at tooLong [as _onTimeout]   (C:\Users\KAMI\AppData\Roaming\npm\node_modules\sails\lib\app\private\loadHooks.js:92:21)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15
Run Code Online (Sandbox Code Playgroud)

当我重新运行帆没有改变它没有给出任何错误.我可以每次都避免这个错误.这是我第一次体验sailsjs所以任何帮助将是apreciated ....

dav*_*ton 39

由于笔记本电脑和数据库服务器之间的互联网连接速度缓慢,我昨晚遇到了这个问题.我的解决方案是在config目录中创建一个名为orm.js的新文件(名称并不重要).

然后添加以下代码:

// config/orm.js
module.exports.orm = {
  _hookTimeout: 60000 // I used 60 seconds as my new timeout
};
Run Code Online (Sandbox Code Playgroud)

我还发现我必须改变我的pubsub超时,但这对你来说可能没有必要.

// config/pubsub.js
module.exports.pubsub = {
  _hookTimeout: 60000 // I used 60 seconds as my new timeout
};
Run Code Online (Sandbox Code Playgroud)

注意:另一个答案建议更改文件node_modules夹中的sails文件.这几乎总是一个坏主意,因为任何npm update可以恢复您的更改.


arc*_*don 23

最好在每个环境中执行此操作.在config目录下,您将拥有以下内容:

环路

然后在每个的module.exports中输入:

module.exports = {

  hookTimeout: 40000

}
Run Code Online (Sandbox Code Playgroud)

请注意,属性名称前面不需要下划线.


K20*_*0GH 9

我意识到这是一个很老的问题,但我也遇到了同样的问题.我确信这不是我的联系.

我的解决方案是更改模型的迁移选项,您可以选择3

  1. 安全 - 永远不会自动迁移我的数据库.我会自己做(手工)
  2. 更改 - 自动迁移,但尝试保留现有数据(实验性)
  3. drop - 每次我举起Sails时擦除/删除所有数据并重建模型

得到config/models.js并在那里放:

migrate: 'safe'
Run Code Online (Sandbox Code Playgroud)

或者你想要使用上面的任何选项.


小智 0

转到您的node_modules文件夹并浏览到\sails\lib\app\private

在您的情况下,您应该转到此文件夹: C:\Users\KAMI\AppData\Roaming\npm\node_modules\sails\lib\app\private

然后打开名为的文件loadHooks.js并转到显示以下内容的行:

var timeoutInterval = (sails.config[hooks[id].configKey || id] && sails.config[hooks[id].configKey || id]._hookTimeout) || sails.config.hookTimeout || 20000;
Run Code Online (Sandbox Code Playgroud)

将此行中的最后一个值更改为20000更高的值并保存文件,然后像平常一样通过“sails lift”运行应用程序

注意:您可能需要尝试一些更高的值,而不是20000直到达到适合您的值。当我将值更改为时,我的应用程序成功解除50000

  • 我总是避免更改“node_modules”文件夹中的任何内容,因为这些是您的依赖项,而不是您的代码。@HeshamUsama 对这个问题的看法是正确的,但(在我看来)更改超时的更好位置是在应用程序的配置中。我添加了一个答案,其中包含有关如何解决我的应用程序问题的详细信息。 (2认同)