【问题标题】:How to read cert files from Cloud Functions for Firebase Folder如何从 Cloud Functions for Firebase 文件夹中读取证书文件
【发布时间】:2019-06-18 18:38:03
【问题描述】:

我正在尝试读取 certs 文件夹下的文件,如下所示:

-functions
 |
--certs
  |
---idp-public-cert.perm

这是我用来读取文件的代码:

fs.readFileSync(path.join(__dirname, 'certs/idp-public-cert.pem')).

当我运行该函数时,我收到以下错误:

Error: ENOENT: no such file or directory, open '/srv/lib/certs/idp-public-cert.pem'

我会很感激任何工作人员如何做到这一点。提前致谢。

【问题讨论】:

  • 您的问题不清楚您的目录结构。我想这样做:fs.readFileSync(path.join(__dirname, 'functions/certs/idp-public-cert.pem'))

标签: javascript firebase google-cloud-functions


【解决方案1】:

我发现用“./”或“/”指定路径是不确定的 - 因为它从某个地方获取了一个相对补丁,可能是 OLDPWD 或 PWD,不确定它是如何搞砸的 但我发现正确的修复方法是添加 __dirname 到路径。 __dirname 将给出函数目录的路径。 所以如果你的函数在 /home/username/firebase/functions/routes,那么 __dirname 会告诉你。 因此,如果您有一个文件 /home/username/firebase/abc/,那么您必须指定: fs.readFileSync(__dirname+"../abc/"

希望这可以节省其他人的时间!!我在这上面浪费了很多时间,这很令人沮丧,并且因为没有阅读文档而自责!

【讨论】:

  • 查看 John Hanley 在 2019 年 1 月 24 日留下的评论,其中涵盖了这一点并展示了如何使用 path.join
【解决方案2】:

只需使用相对路径certs/idp-public-cert.pem 读取文件即可。所有相对路径都将相对于您部署的函数文件夹进行解释。不要尝试构建文件的完整路径,因为您不应该假设您的代码部署在服务器实例中的有效挂载位置。

【讨论】:

  • fs.readFileSync( './certs/idp-public-cert.pem') 有效。谢谢。
猜你喜欢
  • 2019-07-09
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 2021-08-04
相关资源
最近更新 更多