sails.js - el gancho orm tarda demasiado en cargar
(6)
Estoy usando dos adaptadores de base de datos con las velas.
una para mondoDB y la segunda para mysql. Siempre que ejecuto el comando "sails lift", una vez que da un error
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
cuando vuelvo a ejecutar las velas sin cambios, no da ningún error. Entonces, ¿cómo puedo evitar este error cada vez? esta es mi primera experiencia con sailsjs, por lo que cualquier ayuda será apreciada ...
Hay dos formas, que probablemente podemos llamarlos como:
1- Método de todo el sistema: (como @arcseldon ha dicho)
Intente agregar la clave hookTimeout al archivo config / env / development.js o config / env / production.js del proyecto. A continuación, casi todos los enganches (excepto algunos enganches, como el moduleloader) recuperarán el valor de tiempo de espera y lo considerarán para los temas del mismo.
2- Método específico del gancho: (como @davepreston ha dicho)
cree un archivo [nombre de módulo] .js en la carpeta de configuración del proyecto y agregue la clave _hookTimeout . Por lo tanto, llevará a asignar el valor de tiempo de espera solo a ese módulo específico. (Tenga cuidado con la estructura json específica para los archivos de configuración de las velas).
Ir al archivo models.js y descomentar migrar: ''alter''
Me doy cuenta de que esta es una pregunta bastante antigua, pero también tuve el mismo problema. Estaba convencido de que no era mi conexión.
Mi solución es cambiar la opción de migración para sus modelos y tendrá una opción de 3
- seguro: nunca migre automáticamente mis bases de datos. Lo hare yo mismo (a mano)
- alterar - migrar automáticamente, pero intentar mantener mis datos existentes (experimental)
- drop: borra / suelta TODOS mis datos y reconstruye modelos cada vez que levanto Sails
Llegó a config / models.js y allí coloque:
migrate: ''safe''
o cualquier opción desde arriba que quieras usar.
Me encontré con este problema anoche debido a una conexión a Internet lenta entre mi computadora portátil y el servidor DB. Mi solución fue crear un nuevo archivo en el directorio de configuración llamado orm.js (el nombre realmente no importa).
Luego agrega el siguiente código:
// config/orm.js
module.exports.orm = {
_hookTimeout: 60000 // I used 60 seconds as my new timeout
};
También descubrí que tuve que cambiar el tiempo de espera de mi pubsub, pero puede que no sea necesario para ti.
// config/pubsub.js
module.exports.pubsub = {
_hookTimeout: 60000 // I used 60 seconds as my new timeout
};
Nota: La otra respuesta recomienda cambiar los archivos de velas dentro de la carpeta node_modules
. Esto es casi siempre una mala idea porque cualquier npm update
podría revertir sus cambios.
Vaya a su carpeta node_modules
y busque /sails/lib/app/private
En su caso, debe ir a esta carpeta: C:/Users/KAMI/AppData/Roaming/npm/node_modules/sails/lib/app/private
Luego abra el archivo llamado loadHooks.js
y vaya a la línea que dice:
var timeoutInterval = (sails.config[hooks[id].configKey || id] && sails.config[hooks[id].configKey || id]._hookTimeout) || sails.config.hookTimeout || 20000;
Cambie el último valor en esta línea de 20000
a un valor más alto y guarde el archivo, luego ejecute la aplicación "levante velas" como lo hace normalmente
NB: es posible que deba probar unos valores más altos en lugar de 20000
hasta que alcance un valor que funcione para usted. Mi aplicación se levantó correctamente cuando cambié el valor a 50000