首页 > 解决方案 > 试图了解您为 NODE_ENV 命令设置环境的位置

问题描述

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

解决方案


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

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

所以例如config.[filename].host

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


当您在节点中运行脚本时,有一个名为 process 的全局变量,其中包含各种漂亮的东西。对于太多信息:这里是 docs 的链接

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

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

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


推荐阅读