Node BigQuery 包——Ubuntu 上的 ENOENT 错误
Posted
技术标签:
【中文标题】Node BigQuery 包——Ubuntu 上的 ENOENT 错误【英文标题】:Node BigQuery package -- ENOENT error on Ubuntu 【发布时间】:2014-05-04 06:27:49 【问题描述】:我正在尝试使用此处找到的 BigQuery 包: https://www.npmjs.org/package/bigquery
设置:Ubuntu 14、最新的 Node、nginx,以及 bigquery 包及其依赖项。
我相信我已经正确设置了它,包括 PEM 文件,但是当我尝试加载密钥文件时,我收到了来自 gauth 的错误:
[2014-05-04 02:14:57.008] [ERROR] gauth - [Error: ENOENT, open './key.mydomain.com.p12.pem']
errno: 34,
code: 'ENOENT',
path: './key.mydomain.com.p12.pem'
Error: ENOENT, open './key.mydomain.com.p12.pem'
我正在运行一个简单的测试脚本,看起来像这样(我已经 Xxxx 删除了我的项目 ID):
var http = require('http')
, bq = require('bigquery')
, fs = require('fs')
, prjId = 'xxxxxxxxxx'; //you need to modify this
bq.init(
scope: 'https://www.googleapis.com/auth/bigquery',
client_secret: './client_secrets.json',
privatekey_pem: './private.mydomain.com.p12.pem',
key_pem: './key.mydomain.com.p12.pem'
);
http.createServer(function (req, res)
res.writeHead(200, 'Content-Type': 'text/plain');
res.write('Testing BigQuery... \n');
bq.job.query(prjId, 'select count(*) from publicdata:samples.wikipedia', function(e,r,d)
if(e) console.log(e);
console.log( JSON.stringify(d) );
);
res.end('Done. \n');
).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');
我尝试过引用不同的文件,使用 __dirname 并且也没有斜杠。
有什么想法吗?我也在查看依赖项中的 Google 代码,但只是没有弄清楚这一点。
【问题讨论】:
【参考方案1】:34 错误意味着“没有这样的文件或目录”。您确定文件 key.mydomain.com.p12.pem 与您的索引文件存在于同一目录中吗?
【讨论】:
是的。它与 app.js 位于同一目录中。为了帮助验证,我将文件名更改为其他名称以“破坏”它......在这种情况下,我在启动节点服务器时立即收到 ENOENT 错误。由于我上面的示例有一个运行得很好的 Node 服务器,并且我只在使用包的包装器为 Google Auth 库时才得到 ENOENT,我认为还有其他问题......【参考方案2】:啊,想通了:我用来生成私钥和公钥的 P12 文件与我的 client_secrets 不匹配。
因此,如果其他人遇到此问题,ENOENT 可能是由于有一个 client_secrets.json 和一组未一起创建的服务帐户的密钥。
【讨论】:
以上是关于Node BigQuery 包——Ubuntu 上的 ENOENT 错误的主要内容,如果未能解决你的问题,请参考以下文章