2016-04-20 2 views
2

У меня возникли проблемы с запуском моего приложения под окнами. Обычно я разрабатываю Macbook, но временно я должен был переключиться. Дело в том, что приложение уже работало над окнами без проблем. Вот сообщение об ошибке:SailsJs - проблемы с подъемом (крюк orm не загружен)

error: A hook (orm) failed to load! verbose: Lowering sails... verbose: Sent kill signal to child process (8684)... verbose: Shutting down HTTP server... verbose: HTTP server shut down successfully. error: TypeError: Cannot read property 'config' of undefined at validateModelDef (C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\lib \validate-model-def.js:109:84) at C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\lib\initialize.js:218 :36 at arrayEach (C:\projects\elearning-builder\node_modules\sails\node_modules\lodash\index.js:1289:13) at Function. (C:\projects\elearning-builder\node_modules\sails\node_modules\lodash\index.j s:3345:13) at Array.async.auto._normalizeModelDefs (C:\projects\elearning-builder\node_modules\sails\node_module s\sails-hook-orm\lib\initialize.js:216:11) at listener (C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\node_module s\async\lib\async.js:605:42) at C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\node_modules\async\li b\async.js:544:17 at _arrayEach (C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\node_modu les\async\lib\async.js:85:13) at Immediate.taskComplete (C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-o rm\node_modules\async\lib\async.js:543:13) at processImmediate [as _immediateCallback] (timers.js:383:17) PS C:\projects\elearning-builder>

Я попытался проверить это, что именно происходит в \node_modules\sails\node_modules\sails-hook-orm\lib\validate-model-def.js:109:84 поэтому я добавил простой console.log temporarly:

console.log("error in line below", hook); 
    var normalizedDatastoreConfig = hook.datastores[normalizedModelDef.connection[0]].config; 

И в результате я вижу:

error in line below Hook { 
    load: [Function: wrapper], 
    defaults: 
    { globals: { adapters: true, models: true }, 
    orm: { skipProductionWarnings: false, moduleDefinitions: [Object] }, 
    models: { connection: 'localDiskDb' }, 
    connections: { localDiskDb: [Object] } }, 
    configure: [Function: wrapper], 
    loadModules: [Function: wrapper], 
    initialize: [Function: wrapper], 
    config: { envs: [] }, 
    middleware: {}, 
    routes: { before: {}, after: {} }, 
    reload: [Function: wrapper], 
    teardown: [Function: wrapper], 
    identity: 'orm', 
    configKey: 'orm', 
    models: 
    { /* models here, I removed this as it was too long /*}, 
    adapters: {}, 
    datastores: {} } 

Таким образом, normalizedModelDef.connection[0] имеет значение development. Но hook.datastores пуст? Вот почему нет config.

Но дело в том, у меня есть связи в моей конфигурации/connections.js

Как здесь:

development: { 
     module : 'sails-mysql', 
     host  : 'localhost', 
     port  : 3306, 
     user  : 'ebuilder', 
     password : 'ebuilder', 
     database : 'ebuilder' 
    }, 
    production: { 
     /* details hidden ;) */ 
    }, 
    testing: { 
     /* details hidden ;) */ 
    } 

Любые предложения/советы высоко оценены.

+0

Проверьте все определения моделей – vkstack

+0

Проблем нет. Все выглядит нормально. – DeJoT

ответ

0

проверить ваш контроллер или модели содержит код ошибки. как любой символ. У меня была такая же проблема, когда мой контроллер содержал какой-либо символ до или после запуска api

1

У вас есть определенные соединения, но у вас есть заданное по умолчанию соединение, которое может быть указано в config/models.js? Если, например, у вас есть:

module.exports.models = { 
     connection: 'mysql', 
     ... 

затем 'MySQL' должна быть определена в вашем connections.js

0

Как я вижу в вашем конфигурационном/connections.js

development: { 
     module : 'sails-mysql', 
     host  : 'localhost', 
     port  : 3306, 
     user  : 'ebuilder', 
     password : 'ebuilder', 
     database : 'ebuilder' 
    }, 

Вы дали module : 'sails-mysql, что является неправильным. Это должно быть adapter:'sails-mysql'

development: { 
     adapter : 'sails-mysql', 
     host  : 'localhost', 
     port  : 3306, 
     user  : 'ebuilder', 
     password : 'ebuilder', 
     database : 'ebuilder' 
    },