试图了解在何处设置NODE_ENV命令的环境

时间:2018-09-19 22:56:35

标签: node.js

我正在开发一个node.js项目,在这里我需要能够从开发环境切换到产品环境。

我看到有一个命令要执行切换,即NODE_ENV = dev npm start。

但是您如何为您的项目配置呢?

换句话说,我看不到将dev设置为localhost并将prod设置为“ www ...”的位置。

更新:

我认为这将有助于显示我的实际app.js文件...

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var cors = require('cors');
var multer = require('multer');
var passport  = require('passport');
var jwt = require('jwt-simple');
var config = require('konfig')();

var app = express();

app.use(cors());
app.use(passport.initialize());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(cors());    

app.use('/api', require('./routes/api'));
app.use(express.static(path.join(__dirname, '../client/app/custom')));
app.use(express.static(path.join(__dirname, '/dist')));
app.use('/fileuploads', express.static(path.join(__dirname, '/fileuploads')));
app.use('/img', express.static(path.join(__dirname, '/img')));
app.use('/vcards', express.static(path.join(__dirname, '/vcards')));
app.use('/pdf', express.static(path.join(__dirname, '../client/app/pdf')));



// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
     res.json({error: err.message});
});

app.all('/*', function(req, res){
    res.sendFile(path.join(__dirname, '/dist/index.html'));
});

module.exports = app;

3 个答案:

答案 0 :(得分:1)

由于您使用的是konfig,因此您在变量中加载了值的字典

config.[filename].[config_key]-(来自https://github.com/vngrs/konfig/

例如config.[filename].host

似乎您也在寻找app.listen()来配置应用程序接收请求的位置。如何使用app.listen遍及整个stackoverflow,您可以在其他地方找到一些很好的答案。


在节点中运行脚本时,会存在一个名为process的全局变量,其中包含各种漂亮的东西。过多的信息:here's a link to the docs

在通过命令NODE_ENV=dev npm start执行的js文件中,您可以编写以下命令,并在控制台中看到变量显示:

const environment_variable = process.env.NODE_ENV;
console.log("environment_variable is set to:", environment_variable);

您可以使用通过环境变量传入的值作为开关来控制流或正在运行的进程的配置。

答案 1 :(得分:0)

在您的js文件中,您将检查process.env.NODE_ENV。

例如

if (process.env.NODE_ENV === "dev") {
   //use localhost
}

答案 2 :(得分:0)

NODE_ENV是环境变量。这样,您在启动应用程序时会明确设置NODE_ENV。

然后您通过代码访问环境变量:

var environment = process.env.NODE_ENV

或者如果您使用快递:

app.get('env')