Подтвердить что ты не робот

Крючок 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, поэтому любая помощь будет оценена....

4b9b3361

Ответ 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