如何在OpenShift中访问process.env.OPENSHIFT_REPO_DIR?

时间:2017-09-26 14:09:31

标签: node.js openshift openshift-3

早期OpenShift Node.js个应用中,process.env.OPENSHIFT_REPO_DIR环境变量可用。不,我迁移到OpenShift 3,我收到了错误。

var apn = require('apn');
var optionsP = {
    token: {
        key: process.env.OPENSHIFT_REPO_DIR + 'APNsAuthKey_AQ34EHZCDQ.p8',
        keyId: "AQ34EHZCDQ",
        teamId: "AQUJ3H44A4",
    },
    production: true,
};

var apnProviderP = new apn.Provider(optionsP);
/opt/app-root/src/node_modules/apn/lib/credentials/token/prepare.js:15
      throw new VError(err, "Failed loading token key");
      ^
VError: Failed loading token key: ENOENT: no such file or directory, open 'undefinedAPNsAuthKey_AQ34EHZCDQ.p8'
    at prepareToken (/opt/app-root/src/node_modules/apn/lib/credentials/token/prepare.js:15:13)
    at config (/opt/app-root/src/node_modules/apn/lib/config.js:42:31)
    at new Client (/opt/app-root/src/node_modules/apn/lib/client.js:11:19)
    at EventEmitter.Provider (/opt/app-root/src/node_modules/apn/lib/provider.js:12:19)
    at Object.<anonymous> (/opt/app-root/src/server.js:26:20)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在OpenShift 3下,如果将捆绑的S2I构建器用于不同的语言,则在大多数情况下,您的应用程序源代码将驻留在目录/opt/app-root/src中。没有环境变量指定目录是什么。

要确认目录是什么,可以使用oc rsh在应用程序的容器中获取交互式shell,然后运行pwd。通常,默认目录是应用程序代码所在的位置。