【问题标题】:How can I define dev & production ENV using express & mysql2?如何使用 express 和 mysql2 定义开发和生产环境?
【发布时间】:2022-01-22 19:32:45
【问题描述】:

我找到了一些其他类似的答案,但我对自己理解和正确理解的能力没有信心,所以如果我的方法是正确的,我希望能得到一些验证,看看我有什么拼凑在一起来自教程。我还包括了要求,因为我实际上并没有在此文件 (db.js) 中调用 express,但它在其他地方使用:

(PS。我正在部署到 Heroku,并使用 JawsDB 作为我的生产数据库)

require("dotenv").config();
const mysql = require("mysql2");
//const { DatabaseError } = require('pg');

const pool = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    database: process.env.DB_NAME,
    password: process.env.DB_PASSWORD,
});

这就是我想做的事情:

app.configure('production', function(){
    app.locals.URLs = {
        const pool = mysql.createPool({
             host: process.env.DB_HOST_LOCAL,
             user: process.env.DB_USER_LOCAL,
             database: process.env.DB_NAME_LOCAL,
             password: process.env.DB_PASSWORD_LOCAL,
    }
});
app.configure('development', function(){
    app.locals.URLs = {
        const pool = mysql.createPool({
             host: process.env.DB_HOST_JAWS,
             user: process.env.DB_USER_JAWS,
             database: process.env.DB_NAME_JAWS,
             password: process.env.DB_PASSWORD_JAWS,
    }
});

这样对吗,我需要app = require('express')吗?

【问题讨论】:

    标签: node.js express mysql2 node-mysql2 jawsdb-maria


    【解决方案1】:

    如果你想向 express 中注入任何东西(路由器、中间件、配置、模板引擎等),那么你将需要“app”。使用locals,您正在应用实例中创建一个“URLs”属性。

    这没什么大不了的,但是您可以将module.exports = pool; 作为一个独立的 js 模块并使用它而不考虑 Express。

    关于您的环境,请注意不要将生产密码泄漏到开发中,也不要将开发人员的本地配置泄漏到生产中。也就是说,您的配置不需要 if.. else 。我还发现您没有用于测试的环境配置...

    Here in the docs 加载变量的首选方法是预加载它们。

    node -r dotenv/config your_script.js
    

    如果您喜欢 .env.local .env.production .env.test 方法,也可以自定义您的 .env 文件

    node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env
    

    这还允许您进行多个设置,而不必担心冲突/意外覆盖或剩余。 你也可以

    • 通过cross-env 注入单个变量
    • 通过PM2 注入生产变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 2011-02-27
      • 2011-06-19
      • 2013-07-14
      相关资源
      最近更新 更多