我有:
在我的 server.js 文件的开头声明了一个根变量(由下面的@JuJoDi提示),现在看起来很简单:
var express = require('express'),
routes = require('./routes'),
api = require('./routes/api'),
http = require('http'),
path = require('path'),
everyauth = require('everyauth'),
connect = require('connect'),
env = process.env.NODE_ENV ? process.env.NODE_ENV : "process.env.NODE_ENV is null";
然后我使用这条路线打印出来:
app.get('/version', function(req,res){
res.json({
"app.get('env')" : app.get('env'),
"process.env.NODE_ENV" : process.env.NODE_ENV,
"Global env" : env
});
});
app.get('env')总是返回'development'并且根本不打印process.env.NODE_ENV(null值)
有没有人知道为什么这不起作用?
我创建了一个简约节点服务器,仍然无法使任何env变量在开放班次上工作:
var http = require('http');
var port = process.env.OPENSHIFT_NODEJS_PORT || 3000;
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || process.env.OPENSHIFT_INTERNAL_IP || 'localhost';
var env = process.env.NODE_ENV
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('' + process.env.NODE_ENV + "|" + env);
}).listen(port, ipaddress);
答案 0 :(得分:3)
我无法重现此问题。我认为您最初收到的 501错误响应是造成问题的原因。
您应该可以通过在项目源文件夹中从内部运行以下内容来解决问题(将-a YOUR_APP_NAME
添加到每个命令的末尾以便在其他位置运行):
检查您当前的申请代币清单:
rhc env list
如果您列出了NODE_ENV
的内容,请将其清除:
rhc unset NODE_ENV
将NODE_ENV
设置为“生产”:
rhc env set NODE_ENV =“production”
通过重新加载服务器,运行rhc env list
或通过SSH连接到应用程序以直接检查系统环境来验证是否已设置该值:
rhc ssh
env | grep NODE_ENV
运行rhc help env
也提供了很多良好的使用信息。根据它们的编写方式,需要重新加载一些服务器才能获取新内容。
我认为在OpenShift上使用MEANStack启动和运行的最简单方法是使用Yeoman's Angular-fullstack generator。它应该自动为您配置环境。
答案 1 :(得分:0)
该闭包无法访问进程对象。在上面尝试
var env = process.env.NODE_ENV;
然后用
打印app.get('/version', function(req,res){
res.json({
"app.get('env')" : app.get('env'),
"process.env.NODE_ENV" : env
});
});
答案 2 :(得分:0)
运行应用时,请尝试以下操作:
NODE_ENV=production npm start
以您启动应用的任何方式替换npm start
(node server
或其他)。
当我在当地工作时,这就是我改变环境的方式。因为我通常希望它是development
。
如果app.get('env')
未设置,Express.js会将development
默认为process.env.NODE_ENV
。
更新
抱歉,错过了OpenShift部分:/
https://www.openshift.com/developers/openshift-environment-variables
看起来OpenShift中的环境变量需要进入:
.openshift / action_hooks /构建
使用export
。你试过了吗?