首页 文章

SailsJs - 提升问题(orm hook无法加载)

提问于
浏览
2

我在Windows下运行我的应用程序时遇到问题 . 通常情况下,我在Macbook上开发,但我不得不切换 . 问题是,应用程序已经在没有问题的情况下在Windows上工作 . 这是一条错误消息:

错误:挂钩(orm)无法加载!详细说明:降低风帆...详细:向子进程发送kill信号(8684)... verbose:关闭HTTP服务器...详细:HTTP服务器成功关闭 . 错误:TypeError:无法读取validateModelDef中未定义的属性'config'(C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ sails-hook-orm \ lib \ validate-model-def.js:109:84)在C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ sails-hook-orm \ lib \ initialize.js:218:36在arrayEach(C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ lodash) \ index.js:1289:13)在Function . (C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ lodash \ index.js:3345:13)在Array.async.auto._normalizeModelDefs(C:\ projects \ elearning-builder \ node_modules \ sails \ node_module s) \ sails-hook-orm \ lib \ initialize.js:216:11)在监听器(C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ sails-hook-orm \ node_module \ async \ lib \ async) . js:605:42)在_arrayEach的C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ sails-hook-orm \ node_modules \ async \ li \ t \ async.js:544:17(C:\ projects \ elearning-builder \ node_modules \ sails \ node_modules \ sails-hook-orm \ node_modu les \ async \ lib \ async.js:85:13)在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:

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 属性 .

但问题是,我的config / connections.js中有连接

像这儿:

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

任何建议/提示高度赞赏 .

3 回答

  • 1

    您定义了一些连接,但是您是否定义了可能在config / models.js中指定的默认连接?例如,如果你有:

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

    那么'mysql'需要在你的connections.js中定义

  • 1

    正如我在config / 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'
        },
    
  • 0

    检查您的控制器或模型包含任何错误代码 . 像任何符号 . 当我的控制器在api开始之前或之后包含任何字符时,我遇到了同样的问题

相关问题