※この記事はsails.js 0.10.x の情報に基づいて記載していまス。それ以前またはそれ以降 0.9 や、0.11 では該当しない可能性がありますのでご注意ください
DB接続設定の記述の仕方がまずくて、 sails is not defined とsailsアプリを起動したときにエラーメッセージが出る
まずい例
ネットで調べると、情報が混ざって何故かこういう風に書いてしまいがちになる 以下にも合っているように見えるがこれだと動かない (0.10.x) sails lift
したときに "sails is not defined" と言われるのだ。
config/local.js
module.exports = {
mysql: {
host: 'localhost',
user: 'YOUR_URSER_NAME',
password: 'YOUR_PASSWORD'
}
}
config/connections.js
module.exports.connections = {
mysqlServer: {
host: sails.config.mysql.host,
user: sails.config.mysql.user,
password: sails.config.mysql.password,
adapter: 'sails-mysql',
database: 'YOUR_DATABASE_NAME'
}
}
あるべきすがた
config/local.js
module.exports = {
connections: {
mysql: {
host: 'localhost',
user: 'YOUR_URSER_NAME',
password: 'YOUR_PASSWORD'
}
}
}
config/connections.js
module.exports.connections = {
mysqlServer: {
adapter: 'sails-mysql',
database: 'YOUR_DATABASE_NAME'
}
}
sails is not defined になる理由
期待していたこと
config/local.js 内に記述した値を他の config 内の設定ファイルで使う!
現実
sails の起動処理が終わったときに、変数 sails が初期化されるので、起動処理中の config 内の.js ではsailsを介してそれを読み込むことはできない。