1

server.jsに次のコードがあります。

throw new Error('The databasenumber was wrong, or you didn\'t bind one.' + process.env.VCAP_SERVICES + " === " + process.env.VCAP_SERVICES["mysql-5.1"]);

この時点での出力は次のとおりです。

node.js:201
    throw e; // process.nextTick error, or 'error' event on first tick
          ^
Error: The databasenumber was wrong, or you didn't bind one.{"mysql-5.1":[{"name":"squarific-data","label":"mysql-5.1","plan":"free","tags":["mysql","mysql-5.1","relational","mysql-5.1","mysql"],"credentials":{"name":"d3d440f0f5eef44ceb9c5e27a94666b58","hostname":"eu01-user01.cbxizyg0fwcn.eu-west-1.rds.amazonaws.com","host":"eu01-user01.cbxizyg0fwcn.eu-west-1.rds.amazonaws.com","port":3306,"user":"uzb6UEDnb5huk","username":"uzb6UEDnb5huk","password":"***"}}]} === undefined
at Object.<anonymous> (/mnt/var/vcap.local/dea/apps/squarific-0-230c9a683dff6b045aa2a237ae9bf515/app/server.js:12:9)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)

もちろん、これは次のようになります。

node.js:201
    throw e; // process.nextTick error, or 'error' event on first tick
          ^
Error: The databasenumber was wrong, or you didn't bind one.{"mysql-5.1":[{"name":"squarific-data","label":"mysql-5.1","plan":"free","tags":["mysql","mysql-5.1","relational","mysql-5.1","mysql"],"credentials":{"name":"d3d440f0f5eef44ceb9c5e27a94666b58","hostname":"eu01-user01.cbxizyg0fwcn.eu-west-1.rds.amazonaws.com","host":"eu01-user01.cbxizyg0fwcn.eu-west-1.rds.amazonaws.com","port":3306,"user":"uzb6UEDnb5huk","username":"uzb6UEDnb5huk","password":"***"}}]} === [{"name":"squarific-data","label":"mysql-5.1","plan":"free","tags":["mysql","mysql-5.1","relational","mysql-5.1","mysql"],"credentials":{"name":"d3d440f0f5eef44ceb9c5e27a94666b58","hostname":"eu01-user01.cbxizyg0fwcn.eu-west-1.rds.amazonaws.com","host":"eu01-user01.cbxizyg0fwcn.eu-west-1.rds.amazonaws.com","port":3306,"user":"uzb6UEDnb5huk","username":"uzb6UEDnb5huk","password":"***"}}]
at Object.<anonymous> (/mnt/var/vcap.local/dea/apps/squarific-0-230c9a683dff6b045aa2a237ae9bf515/app/server.js:12:9)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)

["mysql-5.1"]は実際には配列であることがはっきりとわかるので、未定義であってはなりません。なぜそれがこの奇妙な振る舞いをするのか私には分かりませんし、なぜそれがこれをするのかどこにも見つかりません。

4

1 に答える 1

0

サービス変数は、appfogによってオブジェクトではなくJSON文字列として渡されます。

于 2012-12-06T06:05:40.200 に答える