node.js - 如何隐藏我的 API 密钥,同时让我的应用程序在 Heroku 中访问它们?
问题描述
我已经创建了一个 Node 应用程序,我终于准备好将它部署到 Heroku。在应用程序中,我使用了几个 API 密钥。这些我已经放在一个单独的文件中,并使用导出从我的应用程序中检索它们。然后我将 APIkey 文件添加到 .gitignore。从那以后,我将我的应用程序部署到 Heroku,但它没有用。
这是我尝试打开我的应用程序时的日志:
2018-12-19T23:38:14.937951+00:00 heroku[web.1]:使用命令启动进程
npm start
2018-12-19T23:38:16.868566+00:00 应用[web.1]:
2018-12-19T23:38:16.868584+00:00 应用程序[web.1]: > 天气应用程序@1.0.0 开始/应用程序
2018-12-19T23:38:16.868587+00:00 app[web.1]:> 节点 app.js
2018-12-19T23:38:16.868588+00:00 应用程序[web.1]:
2018-12-19T23:38:17.072318+00:00 app[web.1]:开始地理编码
2018-12-19T23:38:17.291050+00:00 heroku[web.1]:状态从开始变为崩溃
2018-12-19T23:38:17.274770+00:00 heroku[web.1]:进程以状态 1 退出
2018-12-19T23:38:25.032443+00:00 heroku[web.1]:使用命令启动进程
npm start
2018-12-19T23:38:28.893393+00:00 应用[web.1]:
2018-12-19T23:38:28.893409+00:00 应用程序[web.1]: > 天气应用程序@1.0.0 开始/应用程序
2018-12-19T23:38:28.893411+00:00 app[web.1]:> 节点 app.js
2018-12-19T23:38:28.893413+00:00 应用[web.1]:
2018-12-19T23:38:29.228923+00:00 app[web.1]:开始地理编码
2018-12-19T23:38:29.529491+00:00 应用 [web.1]: 内部/模块/cjs/loader.js:583
2018-12-19T23:38:29.529503+00:00 app[web.1]:抛出错误;
2018-12-19T23:38:29.529504+00:00 应用 [web.1]: ^
2018-12-19T23:38:29.529506+00:00 应用程序[web.1]:
2018-12-19T23:38:29.529508+00:00 app[web.1]:错误:找不到模块“../APIkeys”
2018-12-19T23:38:29.529510+00:00 app[web.1]: 在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
2018-12-19T23:38:29.529512+00:00 app[web.1]: 在 Function.Module._load (internal/modules/cjs/loader.js:507:25)
2018-12-19T23:38:29.529514+00:00 app[web.1]: 在 Module.require (internal/modules/cjs/loader.js:637:17)
2018-12-19T23:38:29.529517+00:00 应用程序 [web.1]:在需要时 (internal/modules/cjs/helpers.js:22:18)
2018-12-19T23:38:29.529519+00:00 应用 [web.1]:在对象。(/app/geocode/geocode.js:4:16)
2018-12-19T23:38:29.529521+00:00 app[web.1]: 在 Module._compile (internal/modules/cjs/loader.js:689:30)
2018-12-19T23:38:29.529522+00:00 app[web.1]: 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
2018-12-19T23:38:29.529524+00:00 app[web.1]: 在 Module.load (internal/modules/cjs/loader.js:599:32)
2018-12-19T23:38:29.529526+00:00 app[web.1]: 在 tryModuleLoad (internal/modules/cjs/loader.js:538:12)
2018-12-19T23:38:29.529528+00:00 app[web.1]: 在 Function.Module._load (internal/modules/cjs/loader.js:530:3)
2018-12-19T23:38:29.546841+00:00 应用 [web.1]:npm 错误!代码生命周期
2018-12-19T23:38:29.547798+00:00 应用 [web.1]:npm 错误!错误号 1
2018-12-19T23:38:29.549579+00:00 应用 [web.1]:npm 错误!天气应用@1.0.0 开始:
node app.js
2018-12-19T23:38:29.549782+00:00 应用 [web.1]:npm 错误!退出状态 1
2018-12-19T23:38:29.550057+00:00 应用 [web.1]:npm 错误!
2018-12-19T23:38:29.550295+00:00 应用 [web.1]:npm 错误!在 weather-app@1.0.0 启动脚本中失败。
2018-12-19T23:38:29.550513+00:00 应用 [web.1]:npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。
2018-12-19T23:38:29.562868+00:00 应用[web.1]:
2018-12-19T23:38:29.563140+00:00 应用 [web.1]:npm 错误!可以在以下位置找到此运行的完整日志:
2018-12-19T23:38:29.563302+00:00 应用 [web.1]:npm 错误!
/app/.npm/_logs/2018-12-19T23_38_29_554Z-debug.log2018-12-19T23:38:29.673736+00:00 heroku[web.1]:状态从开始变为崩溃
2018-12-19T23:38:29.648927+00:00 heroku[web.1]:进程以状态 1 退出
2018-12-19T23:38:51.067585+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=desolate-eyrie- 91272.herokuapp.com request_id =a200b9fa-8f0b-4d33-a1d2-eb990b0bd035 fwd="158.248.240.182" 测功机=连接=服务=
现在这是我的第一个真正的应用程序,所以我的经验是有限的,很可能我的方法是不正确的。我的问题是:如果我的 APIkey 不应该被添加并因此隐藏在我的 .gitignore 中,那么我应该使用什么方法来隐藏我的密钥但仍然让 Heroku 能够运行我的应用程序?我的应用程序通过npm start
使用 app.js在本地工作。
让我知道是否需要更多信息。
解决方案
我想让你知道我已经解决了我的问题。我误解了 .gitignore 实际上做了什么。相反,我使用了一个简单的环境文件,它就像一个魅力
推荐阅读
- oracle - PL/SQL - 在存储在变量中的 for 循环中传递查询
- http - 通过在 URL 中传递值来提交值并启动搜索
- python - 从 DataFrame 创建直方图(其中索引值是变量)
- php - 如何通过 PHP 调用云函数
- scala - Scala 错误:对象 XML 不是 Apache Spark 上包 org.json 的成员
- android - ANDROID STUDIO 相机配置和按键映射
- spring - 为什么执行插入语句时 OneToMany JPA 关联失败
- airflow - 我可以在气流中使用 python def 吗?或者这不是很好的做法?
- apollo - 如何使用 apollo 缓存来匹配作为子数组/子 ID 列表的输入变量?
- ios - 如果我知道 iOS 中的 IP 地址,如何获取 Zebra 打印机名称?