Javascript 在云函数中引用pem文件

Javascript 在云函数中引用pem文件,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我正在尝试将firebase队列工作者转换为向云函数发送推送通知。我正在使用节点apn向iOS设备发送推送通知。它需要设置一个连接,该连接要求我指定key.pem文件和cert.pem文件。这些文件位于worker js文件所在的同一位置,可以正常工作。我将代码移到了一个云函数,但在日志控制台中出现了这个错误 { Error: ENOENT: no such file or directory, open './cert.pem' at Error (native) errno: -

我正在尝试将
firebase队列
工作者转换为向云函数发送推送通知。我正在使用
节点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文件指定为
/cert.pem
cert.pem
,但在这两种情况下都会出现类似的错误。我想问题在于
.pem
文件没有随函数一起提供


如何在云函数中指定这样的文件?

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

应该是:

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

这方面有进展吗?没有。我还没有找到任何解决这个问题的方法,对于firebase团队中没有人给出任何建议,我感到有点失望。我暂时依靠我的排队工人。无论如何,谢谢你的回答。谢谢你的回答。我也会试试这个。查看firebase函数文档时,我没有找到任何使用
\uuuu dirname
的参考,我只是搜索了文档和firebase函数示例,没有看到任何对
\uu dirname
的参考。为了我和其他人的利益,是否有可能分享此变更的参考资料?谢谢希望这能为您解释原因:非常感谢您提到stackoverflow问题。今天学到了一些新的和重要的东西。很抱歉,我无法测试您建议的更改,因为我无法从当前任务中抽出时间。我终于能够测试此更改,并且它可以正常工作。谢谢