pak*_*ldt 2 node.js google-bigquery google-cloud-platform
我有一个与BigQuery节点一起运行的Node-RED安装,但突然停止工作。能够将其范围缩小到一个很小的例子,我再也无法工作了:
代码如下:
// Imports the Google Cloud client library
const BigQuery = require('@google-cloud/bigquery');
// Your Google Cloud Platform project ID
const projectId = 'my-project';
const file = './google-cloud-auth.json'
// Creates a client
const bigquery = new BigQuery({
projectId: projectId,
keyFilename: file
});
const datainsert = {
"water_total": 555,
"power_vp": 3460651,
"power_ftx": 4401819,
"time": "2018-01-23T09:50:17.672Z",
"power_total": 5737457,
"power_garage_radiator_south": 182521,
"power_garage_radiator_north": 76388
};
// The name for the new dataset
const dataset = bigquery.dataset('consumption');
const table = dataset.table('consumption_test');
table.insert(datainsert, function(err, response) {
console.log(JSON.stringify(err));
console.log(JSON.stringify(response));
});
Run Code Online (Sandbox Code Playgroud)
当我在Ubuntu计算机(NodeJS v4.8.7)上运行它时,它输出:
{}
undefined
Run Code Online (Sandbox Code Playgroud)
没有任何内容写入BQ。但是,当我在Mac(NodeJS v6.9.4)上运行完全相同的代码(实际上我已经尝试复制整个文件夹结构)时,它将输出:
null
{"kind":"bigquery#tableDataInsertAllResponse"}
Run Code Online (Sandbox Code Playgroud)
并且记录已成功存储。
显然,我认为它与Node版本有关,因此我尝试在它曾经运行过的Docker容器中运行它,但是使用NodeJS v6.9.4,但它仍无法在该机器上成功运行。我正在使用相同的身份验证文件运行,因此我认为它与此无关。
有人会知道我的环境是什么导致这种情况发生的吗?
经过数小时的头部刮擦,我终于发现问题出在机器上的时钟略微不同步(5分钟)。当我决定运行其他命令以查看它们是否起作用时,我意识到了这一点。尝试获取数据集列表时,出现以下错误消息(非常有用):
[错误:invalid_grant:无效的JWT:令牌必须是短期令牌(60分钟),并且在合理的时间范围内。检查您的iat和exp值,并使用带有偏斜的时钟来解决系统之间的时钟差异。]
问题解决了。
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |