在云函数中引用 pem 文件

Reference a pem file in a cloud function

我正在尝试将 firebase-queue 工作人员转换为将推送通知发送到云功能。我正在使用 node-apn 向 iOS 设备发送推送通知。它需要建立一个连接,这需要我指定一个 key.pem 文件和 cert.pem 文件。这些文件存在于 worker js 文件存在的同一位置并且可以正常工作。我将代码移至云函数,但在日志控制台中收到此错误

{ Error: ENOENT: no such file or directory, open './cert.pem'
    at Error (native)
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: './cert.pem' } 'Unable to send push notification to iOS device. Socket Error'

下面是指定文件和在代码中创建连接的方式

var connectionOptions = {
  cert:'./cert.pem',
  key:'./key.pem',
  production: true
};

var apnConnection = new apn.Connection(connectionOptions);

我尝试将证书文件指定为 ./cert.pemcert.pem,但在这两种情况下我都遇到了类似的错误。我想问题是 .pem 文件没有随函数一起提供。

如何在云函数中指定此类文件?

您的路径引用不太适合 firebase 函数。

应该是:

var connectionOptions = {
  cert:__dirname + '/cert.pem',
  key:__dirname + '/key.pem',
  production: true
};