node.js - 试图了解您为 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;
解决方案
由于您使用的是 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);
您可以使用通过环境变量传入的值作为开关来控制您正在运行的进程的流程或配置。
推荐阅读
- javascript - 如何在 NextJs 中的页面转换之间使用相同的 Apollo 缓存?
- git - gitlab CI 管道构建作业没有从 git 的本地 m2repo 访问依赖项
- powershell - Powershell 在输出时更改属性名称
- python - 使用 Python 优化从 Postgres 到 Oracle 数据库的迁移
- python - Flask-sqlalchemy 相当于查询一个数据库的多个 WHERE 条件
- python - python中的k_mean结果图
- azure - 所有订阅的 Azure 区域列表是否相同?
- sql - 如何在 Oracle 中删除多个函数
- javascript - 改进这种定时攻击的方法(代码挑战)
- python - 我的数据来自