【问题标题】:Trying to understand where you set the environment for the NODE_ENV command试图了解您为 NODE_ENV 命令设置环境的位置
【发布时间】:2018-09-19 22:56:34
【问题描述】:

我正在开发一个 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;

【问题讨论】:

标签: node.js


【解决方案1】:

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

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);

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

【讨论】:

    【解决方案2】:

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

    例如

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

    【讨论】:

      【解决方案3】:

      NODE_ENV 是一个环境变量。因此,您在启动应用程序时显式设置 NODE_ENV。

      然后在代码中访问环境变量:

      var environment = process.env.NODE_ENV
      

      或者如果您使用的是快递:

      app.get('env')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-03
        • 2015-07-30
        • 2020-01-01
        • 2017-08-18
        • 2019-07-28
        • 2018-07-22
        • 2013-10-29
        • 1970-01-01
        相关资源
        最近更新 更多