我正在使用node.js 运行Google计算引擎,但正在使用codeanywhere进行测试。我能够在codeanywhere终端上运行一个bigquery请求,并获得要在终端控制台上显示的结果。
但是当我尝试从html页面执行相同操作时,我无法将结果返回到用户/浏览器。
我在codeanywhere上安装的唯一节点模块是firebase和googleapis。
我希望在服务器端运行bigquery调用,因为我想隐藏身份验证信息;否则只会从javascript运行bigquery api。
我的test.js是:
'use strict';
var google = require('XXX/lib/googleapis');
var bigquery = google.bigquery('v2');
var authClient = new google.auth.JWT(
'XXX@XXX.iam.gserviceaccount.com',
'XXX.pem',
null, ['https://www.googleapis.com/auth/bigquery']);
var request = {
projectId: 'XXX',
//all: true,
auth: authClient
};
var list = bigquery.datasets.list(request, function(err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
return result;
}
});
我的html是:
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Testing Server Call </title>
<script type = "text/javascript" src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type = "text/javascript" >
$(function() {
$.ajax({
type: 'GET',
url: 'test.js'
success: function(data) {
console.log('yay');
console.log(data);
},
error: function(xhr, status, error) {
console.log('Error: ' + error.message);
}
});
});
</script>
</head>
<body>
hi there
</body>
</html>
我在过去几天进行了搜索和测试,并且不知道我错过了什么。我一直收到错误:Error: require is not defined
我无法找到任何教程来帮助我完成这些步骤。提前感谢您的帮助。
答案 0 :(得分:0)
'use strict';
var http = require('http');
var google = require('XXX/lib/googleapis');
var bigquery = google.bigquery('v2');
var authClient = new google.auth.JWT(
'XXX@XXX.iam.gserviceaccount.com',
'XXX.pem',
null, ['https://www.googleapis.com/auth/bigquery']);
var request = {
projectId: 'XXX',
//all: true,
auth: authClient
};
var server = http.createServer(function(req, res){
var list = bigquery.datasets.list(request, function(err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
response.end(result);
}
});
});
server.listen(8080, function(){});
在前端,您必须指定要提出请求的路线
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Testing Server Call </title>
<script type = "text/javascript" src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type = "text/javascript" >
$(function() {
$.ajax({
type: 'GET',
url: 'http://localhost:8080/'
success: function(data) {
console.log('yay');
console.log(data);
},
error: function(xhr, status, error) {
console.log('Error: ' + error.message);
}
});
});
</script>
</head>
<body>
hi there
</body>
</html>
之后你必须在命令行node test.js
答案 1 :(得分:0)
这里你使用test.js作为在客户端加载js的url。您不能在客户端使用require,因此是错误。您应该创建一条路线并将其交给那里。