0

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)

任何的想法?

4

1 回答 1

1

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

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

于 2017-09-26T23:34:58.877 回答