【问题标题】:Heroku build "failed to compile" because of gitignore由于 gitignore,Heroku 构建“编译失败”
【发布时间】:2020-08-06 15:23:23
【问题描述】:

我正在尝试将使用“create-react-app”构建的应用程序部署到 Heroku。

我遵循了所有步骤。

当我尝试推送到 Heroku 时,我收到以下错误:

Failed to compile.
./src/services/api/securities/index.ts
Cannot find file './keys' in './src/services/api/securities'.

我知道这是为什么。

'keys'文件在我的.gitignore 中。它包含敏感的 API 密钥,所以我希望 git 忽略它。

这是访问 index.ts fike 中的键的尝试

export * from './keys'

但似乎 Heroku 没有它就无法构建。

请帮忙。

【问题讨论】:

  • 这不是“因为 gitignore”,而是因为您构建了一个依赖于您忽略的文件的应用程序。您的services/api/securities/index.ts 中尝试加载该文件的内容是什么?请edit您的问题并向我们展示minimal reproducible example

标签: node.js reactjs heroku create-react-app gitignore


【解决方案1】:

这不是 Heroku 的问题,任何平台都需要应用程序中所需的文件来构建。

此外,不得将敏感数据(密钥文件)推送到 Git。您需要在您的应用程序中需要密钥文件的地方进行一些更改,从环境变量(如 process.env.{key_name})中读取所有这些属性,并在 Heroku 中在环境变量中设置此敏感属性。

查看此链接

https://devcenter.heroku.com/articles/config-vars

希望你明白了。

【讨论】:

  • 实际上,我读到也不建议将敏感键存储在 env 变量中。我要做的是在后端简单地调用我的第三方 API(需要密钥)。这样,它既对用户隐藏,又可以由 Heroku 构建。
  • “我读到也不建议将敏感键存储在环境变量中”——你从哪里读到的?原因是什么?您的后端代码仍然需要 API 密钥,并且您仍然需要在某处进行设置。这几乎肯定在环境变量中。
  • 你能分享那个链接吗,据我所知,这是在环境变量中保存敏感密钥的最佳方法,请检查:- stackoverflow.com/questions/12461484/…
  • 在这里,他们建议:create-react-app.dev/docs/adding-custom-environment-variables 另外,即使我将密钥存储在后端的某个文件中,是否仍然不会向用户公开,因为它永远不会显示?
  • @NikhilBhaskar,不要将敏感信息放入环境变量中,这并不是一个警告。 React 甚至不能访问 环境变量,因为它在用户的浏览器中运行,而不是在服务器上。 (它通过编译到应用程序中来伪装它,但这些不是真正的环境变量。)请注意不要将敏感信息放入客户端代码期间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
相关资源
最近更新 更多