Крючок orm слишком длинный для загрузки
Я использую два адаптера базы данных с парусами.
один для mondoDB и второй для mysql.whenever я запускаю команду "подтяжка парусов".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, поэтому любая помощь будет оценена....
Ответы
Ответ 1
Я столкнулся с этой проблемой вчера вечером из-за медленного интернет-соединения между моим ноутбуком и сервером БД. Моим решением было создать новый файл в каталоге 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
. Это почти всегда плохая идея, потому что любой npm update
может вернуть ваши изменения.
Ответ 2
Скорее всего, лучше всего сделать это на основе env. В директории config у вас будет что-то вроде:
![env path]()
Затем введите внутри модуля. Экспорт каждого из них:
module.exports = {
hookTimeout: 40000
}
Обратите внимание: нет необходимости также подчеркивать перед именем атрибута.
Ответ 3
Я понимаю, что это довольно старый вопрос, но у меня также была та же проблема. Я был убежден, что это не моя связь.
Мое решение - изменить параметр миграции для ваших моделей, и у вас будет выбор из 3
- безопасно - никогда автоматическая миграция моих баз данных. Я сделаю это сам (вручную).
- alter - автомиграция, но попытка сохранить существующие данные (экспериментальные)
- drop-wipe/drop ВСЕ мои данные и перестраивайте модели каждый раз, когда я поднимаю паруса
Получите config/models.js и там поставьте:
migrate: 'safe'
или любой другой вариант, который вы хотите использовать.
Ответ 4
Есть два способа, которые мы можем назвать их следующим образом:
1- Общесистемный метод: (как сказал @arcseldon)
Попробуйте добавить ключ hookTimeout в файл config/env/development.js проекта или файл config/env/production.js. Затем почти все крючки (за исключением некоторых перехватчиков, таких как moduleloader) будут извлекать значение тайм-аута и рассматривать его для темы.
2-Крюк-специфический метод: (как сказал @davepreston)
создайте файл [module-name].js в папке конфигурации проекта и добавьте к нему ключ _hookTimeout. Таким образом, это приведет к назначению значения тайм-аута только для этого конкретного модуля. (Будьте осторожны с конкретной структурой json для файлов конфигурации парусов.)
Ответ 5
Перейдите к папке 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
до некоторого более высокого значения и сохраните файл, а затем запустите приложение "парусами", как обычно.
Примечание: вам может потребоваться опробовать несколько более высоких значений вместо 20000
, пока вы не достигнете значения, которое будет работать для вас. Мое приложение успешно снято, когда я изменил значение на 50000
Ответ 6
Перейдите в файл models.js и раскомментируйте migrate: 'alter'
Ответ 7
Запустив паруса, выполните эту команду в командной строке. Поднимите паруса hookTimeout = 75000