我有:
将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。它应该自动为您配置环境。

10-06 02:27