代理服务器

时间:2017-03-30 02:33:15

标签: node.js firebase proxy admin firebase-admin

当计算机位于公司代理后面时,如何在NodeJS上运行Firebase管理员?

npm已经配置了代理和https代理。 npm命令执行正常。

Firebase会尝试直接访问互联网:

  

错误:通过"凭证"提供给initializeApp()的凭证实施财产无法获取有效的Google OAuth2访问令牌,并显示以下错误:" connect ETIMEDOUT 216.58.203.45:443"。

我尝试在firebase-admin下更新faye-websocket \ lib \ faye \ websocket \ client.js以阅读

  var Client = function(_url, protocols, options) {
  options = options || {};
  options.proxy = {
    origin: 'http://proxy.server.local:8080'
  };

我尝试了几种变体,但nodejs仍在尝试直接访问216.58.203.45:443。我还应该更新什么以使其有效?

2 个答案:

答案 0 :(得分:2)

这是我在公司代理后面运行FirebaseAdmin的方式。

请安装最新的Firebase管理节点版本,即v6.4.0及更高版本。此外,您还需要安装tunnel2库。

npm install firebase-admin@6.4.0
npm install tunnel2


var admin = require('firebase-admin');
var serviceAccount = require('path/to/serviceAccountKey.json');
const tunnel = require('tunnel2')
// Create your Proxy Agent 
// Please choose your tunneling method accordingly, my case
// is httpsoverHttp, yours might be httpsoverHttps
const proxyAgent = tunnel.httpsOverHttp({
    proxy: {
      host: 'yourProxyHost',
      port: yourProxyPort,
      proxyAuth: 'user:password' // Optional, required only if your proxy require authentication
    }
});
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount, proxyAgent),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

希望它对您有帮助。我为此写了一篇文章。你可以在那里参考 the article here

答案 1 :(得分:0)

因为我花了一段时间才弄清楚它是如何工作的,所以任何人都可以搜索:

const proxyAgent = tunnel.httpsOverHttp({
  proxy: {
    host: 'YOUR_PROXY_HOST',
    port: YOUR_PROXY_PORT,
    proxyAuth: 'user:password', // Optional, required only if your proxy require authentication
  },
});

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount, proxyAgent),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com',
  httpAgent: proxyAgent, //this is what I was missing
});