尝试在我的项目中使用 .env 文件

Trying to use a .env file inside my project

我有一个没有错误的后端,所以我试图将它发送到 Heroku Server,因为这是我第一次尝试使用 Heroku,我选择了一个免费的数据库(JawsDB MySQL ), 但试图将我的本地数据库 MySQL 更改为 Heroku 上的数据库,我的 .env 文件不再工作了,我已经尝试在那里更改几项内容,但我总是遇到与我的 .env 相关的错误文件

.env:6
    DB_HOST=qao3ibsa7hhgecbv.cbetxkdyhwsb.us-east-1.rds.amazonaws.com,

在 MySQL workbench 上安装我的数据库我没有收到任何错误,但我找不到在我的 .env 文件中设置它的方法 这是我的 .env 文件:

require('dotenv').config();

module.expots = {
  authSecret: 'myauthsecret',
  db: {
    DB_HOST=dbhost.us-east-1.rds.amazonaws.com,
    DB_USER=dbuser,
    DB_PASSWORD=dbpassword
    DB_PORT=3306,
    DB_DATABASE=dbname
  }
}

我的授权密码被 passport.js

使用

这里是我的 knexfile.js 我设置数据库凭据的地方:

const { db } = require('./.env');

module.exports = {
  client: 'mysql2',
  connection: {db,
    mysqlhost: process.env.DB_HOST,
    username: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    port: process.env.DB_PORT,
    database: process.env.DB_DATABASE
  },
  pool: {
    min: 2,
    max: 10
  },
  migrations: {
    tableName: 'knex_migrations'
  }
};

我不知道这有什么问题,在我的本地机器上,我曾经像这样设置我的 .env:

module.exports = {
  authSecret: 'sqt;n/eP-kX-(J#I#8WahB|uhx/i)^$aZ[ZD!PADRZ#Qn@^s;Sl]~wI?3ADxF',
  db: {
    host: '127.0.0.1',
    port: '3306',
    user: 'root',
    password : 'aPassword',
    database : 'database'
  }
}

它在工作,现在我不知道我应该怎么做才能让它在 Heroku 上与我的数据库一起工作...

您收到的错误是因为您将 .env 作为 JS 代码加载,而 db 对象不是有效的 JS。有效的JS应该是这样的:

module.expots = {
  authSecret: 'myauthsecret',
  db: {
    DB_HOST: "dbhost.us-east-1.rds.amazonaws.com",
    DB_USER: "dbuser",
    DB_PASSWORD: "dbpassword",
    DB_PORT: 3306,
    DB_DATABASE: "dbname",
  }
}

也就是说,对于 .env 文件应该有什么以及如何使用它存在误解。正确的 .env 内容应该是:

# .env
# Replace with the correct values 
DB_HOST=dbhost.us-east-1.rds.amazonaws.com
DB_USER=dbuser
DB_PASSWORD=dbpassword
DB_PORT=3306
DB_DATABASE=dbname 

然后在您的 knexfile.js 中:

// This loads the .env variables into the process.env 
require('dotenv').config();

module.exports = {
  client: 'mysql2',
  connection: {
    host: process.env.DB_HOST,
    username: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    port: process.env.DB_PORT,
    database: process.env.DB_DATABASE
  },
  ...
};