【问题标题】:SailsJs - problems with lifting (orm hook failed to load)SailsJs - 提升问题(orm 钩无法加载)
【发布时间】:2016-08-13 11:57:59
【问题描述】:

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

错误:钩子 (orm) 加载失败! 详细:降低帆... 详细:向子进程发送终止信号(8684)... 详细:关闭 HTTP 服务器... 详细:HTTP 服务器成功关闭。 错误:TypeError:无法读取未定义的属性“配置” 在 validateModelDef (C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\lib \验证模型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) 在功能。 (C:\projects\elearning-builder\node_modules\sails\node_modules\lodash\index.j s: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 s\async\lib\async.js:605:42) 在 C:\projects\elearning-builder\node_modules\sails\node_modules\sails-hook-orm\node_modules\async\li b\async.js:544:17 在 _arrayEach (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) 在 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 ;) */
    }

非常感谢任何建议/提示。

【问题讨论】:

  • 检查所有模型定义
  • 没有问题。一切似乎都很好。

标签: orm sails.js hook


【解决方案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'
    },

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2014-10-10
        • 1970-01-01
        • 2015-06-22
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        相关资源
        最近更新 更多