挂钩太长时间加载

时间:2015-02-15 09:54:45

标签: sails.js

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

一个用于mondoDB,第二个用于mysql。每当我运行命令" 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

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

8 个答案:

答案 0 :(得分:38)

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

然后添加以下代码:

// config/orm.js
module.exports.orm = {
  _hookTimeout: 60000 // I used 60 seconds as my new timeout
};

我还发现我必须更改我的pubsub超时,但这对您来说可能没有必要。

// config/pubsub.js
module.exports.pubsub = {
  _hookTimeout: 60000 // I used 60 seconds as my new timeout
};

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

答案 1 :(得分:23)

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

env path

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

module.exports = {

  hookTimeout: 40000

}

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

答案 2 :(得分:9)

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

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

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

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

migrate: 'safe'

或您想要使用的上述任何选项。

答案 3 :(得分:1)

有两种方式,我们可以将它们称为:

1-全系统方法:(正如@arcseldon所说)

尝试将 hookTimeout 键添加到项目的config / env / development.js或config / env / production.js文件中。接下来几乎所有的钩子(除了一些钩子,比如moduleloader)都将检索超时值并考虑它自己。

2- Hook特定方法:(正如@davepreston所说)

在项目的配置文件夹中创建[module-name] .js文件,并为其添加 _hookTimeout 键。因此,它将导致仅将超时值分配给该特定模块。 (请注意sails配置文件的特定json结构。)

答案 4 :(得分: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;

将此行中的最后一个值从20000更改为更高的值并保存文件然后通过" sails lift"运行您的应用程序。像往常一样

注意:您可能需要尝试使用更高的值而不是20000,直到达到适合您的值。当我将值更改为50000

时,我的应用程序成功解除了

答案 5 :(得分:0)

转到 models.js 文件并取消注释迁移:'更改'

答案 6 :(得分:0)

在运行风帆时,在命令行中运行此命令 帆扬起hookTimeout = 75000

答案 7 :(得分:0)

您还可以尝试将defaults: { timeout: 30000 }添加到您的钩子中 参考:https://sailsjs.com/documentation/concepts/extending-sails/hooks/hook-specification/defaults