我有:
将export node_env=production添加到app root/data/.bashprofile(echo$node_env显示生产)
tried rhc set env node_env=production-生成设置环境变量的myapp…服务器返回意外错误代码:501
在本地repo中创建了一个.openshift/action_hooks目录,并将行export node_env=production添加到start和pre_start文件中,提交并推送到openshift
尝试了.openshift/action_hooks/pre_start
在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根本不打印(空值)
有人知道为什么这不起作用吗?
更新
我创建了一个极简的节点服务器,仍然无法让任何env变量在open shift上工作:
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);
最佳答案
我无法复制这个问题。我认为您最初收到的501错误响应是您出现问题的原因。
您应该能够从项目源文件夹中的内部运行以下命令(将-a YOUR_APP_NAME
添加到要在其他位置运行的每个命令的末尾)来进行故障排除:
检查应用程序令牌的当前列表:
RHC环境列表
如果您有为NODE_ENV
列出的内容,请将其清除:
RHC未设置节点环境
将NODE_ENV
设置为“生产”:
rhc env set node_env=“生产”
通过重新加载服务器、运行rhc env list
或通过ssh连接到应用程序以直接检查系统环境,验证是否已设置该值:
RHC宋承宪
环境节点
运行rhc help env
也提供了许多良好的使用信息。根据它们的编写方式,一些服务器需要重新加载才能获取新内容。
我认为在openshift上使用meanstack最简单的方法就是使用Yeoman's Angular-fullstack generator。它应该自动为您配置环境。