【问题标题】:NodeJS: How to have the same code for local / prod environmentsNodeJS:如何为本地/生产环境使用相同的代码
【发布时间】:2016-12-05 10:24:33
【问题描述】:

我正在尝试弄清楚如何构建我的应用,这样它就不必区分环境。

例如,我有一个名为UpdateConfig() 的函数,当它在local 上运行时,它只是从路径中读取一个json。在 prod 上运行的相同函数读取相同的 json,但从 AWS S3 获取它。

一种编码方式是:

if( enviroment == LOCAL ) json.readFile('path', ...);
else S3.getObject(options, ...);

我应该采取什么方法才能在两个环境中使用相同的代码?

为了确保我的代码不需要考虑我所处的环境,我应该注意什么一般规则吗?

【问题讨论】:

    标签: node.js design-patterns


    【解决方案1】:

    通常通过节点中的process.env.NODE_ENV 变量来指定应用处于开发模式还是生产模式。

    您可以通过命令行 (linux) 设置该变量:export NODE_ENV=dev

    或通过package.json

    "scripts": {
      "start": "set NODE_ENV=dev && node app.js"
     }
    

    您甚至可以在应用程序中进行设置,但不建议这样做:process.env.NODE_ENV = 'dev';

    您可以简单地检查您的应用中的process.env.NODE_ENV 变量,无论它是开发版还是生产版。例如:

    if (process.env.NODE_ENV === 'dev') {
        // dev code
    } else {
        // prod code
    }
    

    警告:package.json 方法可能会在 dev 之后添加一个空格。

    【讨论】:

    • 感谢您的信息!这肯定解决了我存储环境类型的位置。但是,有什么方法可以解决我的其他问题吗?没有针对不同环境的不同代码。他们唯一能想到的就是给自己建一个工厂,但不确定这是最好的方法。
    • 嗯,我认为如果你想以不同的方式处理事情,无论你是在 dev 还是 prod,你都需要不同的代码。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2017-11-04
    • 2015-06-14
    • 2011-05-22
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多