推送到github而不在ex的特定文件中包含秘密密钥或密码。 app.js

时间:2020-06-23 02:36:39

标签: node.js git express github

如何将不包含在app.js中的任何数据库登录或ssh提交到GitHub的提交?

我问是因为我试图将包含机密信息的文件包含到.gitignore中,但是该文件还包含其他代码,如果有人将其克隆,则该代码需要上载到GitHub才能运行应用程序或叉子...

3 个答案:

答案 0 :(得分:0)

使用.env文件加载环境变量

要这样做,您需要:

安装dotenv

yarn add dotenv 

npm install dotenv 

然后创建一个.env文件,在其中保存您的信息,例如

PASSWORD="777700"

然后将其添加到您的index.js文件

const dotenv = require("dotenv")

dotenv.config()

然后只需通过

在文件中访问它
console.log(process.env.PASSWORD) // "777700"

最后将.env文件添加到您的.gitignore

答案 1 :(得分:0)

您应确保您为{em>任何和所有配置文件设置了.gitignore条目。正常情况下,我会有一个概括的config/*.json条目,以避免意外提交任何内容。

您可以包括这些文件的“示例”版本,人们可以复制和自定义这些文件的“示例”版本以反映其本地配置,例如config/server.json.example或类似的版本。

还有.env之类的工具,它们的格式更一致,并使用环境变量或.env文件覆盖它们。这也很容易被忽略。

与往常一样,在您的README.md文件中完整记录配置过程,并定期测试说明是否仍然有效。

答案 2 :(得分:0)

您应该使用dotenv lib

以下是使用dotenv保留环境变量的示例。

.env

SECRET=development
PORT=3002
SECRET=RC
SCRYPTPARAM=
PGHOST=0.0.0.0
PGPORT=5432
PGDATABASE=
PGUSER=postgres
PGPASSWORD=

要在app.js中使用环境变量,只需在使用环境变量之前调用dotenv。

app.js

require('dotenv').config() // <-- here you load your env vars from .env file.
const express = require('express');
const logger = require('morgan');
const cors = require('cors');
const expressJwt = require('express-jwt');

const app = express();
app.use('/secure', expressJwt({ secret: process.env.SECRET }));
cors({ credentials: true, origin: true });
app.use(cors());
app.use(express.json());

if (process.env.NODE_ENV !== 'test') { app.use(logger('dev')); }

app.use(require('./server/index'));

module.exports = app;