我正在使用两个带风帆的数据库适配器。
一个用于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所以任何帮助都会被贬低....
答案 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目录下,您将拥有以下内容:
然后在每个的module.exports中输入:
module.exports = {
hookTimeout: 40000
}
请注意,属性名称前面不需要下划线。
答案 2 :(得分:9)
我意识到这是一个很老的问题,但我也遇到了同样的问题。我确信这不是我的联系。
我的解决方案是更改模型的迁移选项,您可以选择3
- safe - 永远不会自动迁移我的数据库。我将自己(手工)
- 更改 - 自动迁移,但尝试保留现有数据(实验性)
- drop - 每次抬起Sails时,擦除/删除所有数据并重建模型
醇>
得到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