我在appfog中发布了一个node.js应用程序,但是当我尝试通过javascript访问mysql数据库时 用(https://github.com/felixge/node-mysql),“node-mysql”似乎没有安装,有什么办法呢? appfog网站上没有文档。感谢。
服务器app.js的代码:
if(process.env.VCAP_SERVICES){
var env = JSON.parse(process.env.VCAP_SERVICES);
var cre = env['mysql-5.1'][0]['credentials'];
}
var Client = require('mysql').Client,
client = new Client();
client.user = cre.user;
client.password = cre.password;
client.host=cre.host;
client.port=cre.port;
client.database=cre.name;
client.connect();
client.query(
'SELECT * FROM scores ',
function selectPlayers(err, results, fields) {
if (err) {
console.log("Error: " + err.message);
throw err;
}
console.log("Number of rows: "+results.length);
console.log(results);
client.end();
});
和错误:
module.js:340
throw err;
^
Error: Cannot find module 'mysql'
at Function.Module._resolveFilename (module.js:338:15)
答案 0 :(得分:1)
你应该添加
"mysql": "2.0.x || 2.1.x",
到package.json文件中的依赖项,然后执行
npm install
你可以查看Appfog的documentation here。有关于依赖关系管理的部分
答案 1 :(得分:1)
Appfog支持NPM,这是在节点中安装依赖项的标准方法。
您可以使用npm install mysql
通过控制台执行此操作,也可以将mysql添加到package.json
文件中并执行npm install
。
第二种方式将自动安装您应用的所有依赖项。
答案 2 :(得分:1)
您好,您只需要在本地下载并安装node.js,这将在您的计算机上启用npm命令,然后转到AppFog面板上的“服务”部分创建您的mySQL服务(VCAP_SERVICES)
当您为应用程序配置和绑定服务时,AppFog会创建一个名为VCAP_SERVICES的环境变量。
此变量包含一个JSON文档,其中包含绑定服务的所有凭据和连接信息的列表。
以下是绑定了两个MySQL数据库服务的应用程序的环境变量示例:
{"mysql-5.1":[
{
"name":"mysql-4f700",
"label":"mysql-5.1",
"plan":"free",
"tags":["mysql","mysql-5.1","relational"],
"credentials":{
"name":"d6d665aa69817406d8901cd145e05e3c6",
"hostname":"mysql-node01.us-east-1.aws.af.cm",
"host":"mysql-node01.us-east-1.aws.af.cm",
"port":3306,
"user":"uB7CoL4Hxv9Ny",
"username":"uB7CoL4Hxv9Ny",
"password":"pzAx0iaOp2yKB"
}
},
{
"name":"mysql-f1a13",
"label":"mysql-5.1",
"plan":"free",
"tags":["mysql","mysql-5.1","relational"],
"credentials":{
"name":"db777ab9da32047d99dd6cdae3aafebda",
"hostname":"mysql-node01.us-east-1.aws.af.cm",
"host":"mysql-node01.us-east-1.aws.af.cm",
"port":3306,
"user":"uJHApvZF6JBqT",
"username":"uJHApvZF6JBqT",
"password":"p146KmfkqGYmi"
}
}
]}
您可以使用应用程序的语言特定工具来调用环境变量。
在Java中:
java.lang.System.getenv("VCAP_SERVICES")
在Ruby中:
ENV['VCAP_SERVICES']
在Javascript中:
process.env.VCAP_SERVICES
在Python中:
os.getenv("VCAP_SERVICES")
在PHP中:
getenv("VCAP_SERVICES")