Sails.js 从其他配置文件访问配置变量

Sails.js 从其他配置文件访问配置变量,sails.js,Sails.js,我在配置文件中使用另一个配置文件中的配置变量集时遇到问题。例如 // file - config/local.js module.exports = { mongo_db : { username : 'TheUsername', password : 'ThePassword', database : 'TheDatabase' } } // file - config/connections.js module.exports.connections = {

我在配置文件中使用另一个配置文件中的配置变量集时遇到问题。例如

// file - config/local.js
module.exports = {
  mongo_db : {
    username : 'TheUsername',
    password : 'ThePassword',
    database : 'TheDatabase'
  }
}

// file - config/connections.js
module.exports.connections = {
  mongo_db: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    user: sails.config.mongo_db.username,
    password: sails.config.mongo_db.password,
    database: sails.config.mongo_db.database
  },
}
当我“扬帆”时,我得到以下错误:

user: sails.config.mongo_db.username,
      ^
ReferenceError: sails is not defined
我可以在其他地方访问配置变量-例如,这可以:

// file - config/bootstrap.js
module.exports.bootstrap = function(cb) {
  console.log('Dumping config: ', sails.config);
  cb();
}
这会将所有配置设置转储到控制台-我甚至可以在那里看到mongo_db的配置设置


我很困惑。

您无法访问配置文件中的
sails
,因为在处理这些文件时,sails config仍在加载中!在bootstrap.js中,您可以访问bootstrap函数内部的配置,因为该函数是在加载Sails后调用的,而不是在函数上方

在任何情况下,config/local.js都会合并到所有其他配置文件之上,因此您可以通过以下方式获得所需:

// file - config/local.js
module.exports = {
  connections: {
    mongo_db : {
      username : 'TheUsername',
      password : 'ThePassword',
      database : 'TheDatabase'
    }
  }
}

// file - config/connections.js
module.exports.connections = {
  mongo_db: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017
  },
}

如果您确实需要从另一个配置文件访问一个配置文件,您可以始终使用
require
,但不建议这样做。由于Sails基于多个因素(包括当前环境)将配置文件合并在一起,因此您可能会读取一些无效选项。最好按预期方式操作:使用config/env/*文件进行特定于环境的设置(例如config/env/production.js),config/local.js进行特定于单个系统(如您的计算机)的设置,其余文件用于共享设置。

Cool-这很有意义。我想我被@mikermcneil对这个问题的评论吓坏了:(见最后一条评论,他似乎确认你可以访问其他配置文件中的配置变量)谢谢-我将尝试使用config/env和config/local的组合。是的,我不确定他是否真的打算回答前面的评论!我见过的最糟糕的框架。如果您想在config/http中做任何值得注意的事情,比如说访问redis,就需要复制代码