2016-12-05 71 views
0

我想弄清楚如何构建我的应用程序,以便它不必区分环境。NodeJS:如何为本地/ prod环境使用相同的代码

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

A到代码,这将是这样:

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

我应该采取以具有两个enviroments相同的代码有什么办法?

是否有任何一般规则我应该注意的事项,以确保我的代码并不需要采取在考虑我在什么环境?

回答

1

指定任何一个应用程序是在dev的或生产模式是通过在节点处的可变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的后面加一个空间。

+0

感谢您的信息!这肯定解决了我在哪里存储环境类型。但是,有什么方法可以解决我的其他问题吗?对于不同的环境没有不同的代码。他们唯一能想到的就是建立自己的工厂,但不知道这是最好的方法。 – user1640736

+0

嗯,我认为如果你想以不同的方式处理事情,无论你是在开发还是在开发中,你都需要不同的代码。 – Syc

相关问题