gpt4 book ai didi

node.js - 如何使用 IBM Cloud Toolchain 访问 Node js 应用程序中的环境变量?

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:29 25 4
gpt4 key购买 nike

对于托管在 IBM Cloud 上并使用 Watson Assistant 的 Node Cloud Foundry 应用程序,我们在 IBM Cloud 的工具链内构建了一个管道。我们在工具链的部署阶段遇到了问题 - 使用环境变量调用 Assistant API 时收到身份验证错误。

当我们使用相同的环境变量在本地运行应用程序时,一切正常。我们可以看到,工具链的设置阶段中定义的环境变量可以在部署阶段中访问(我们可以使用 cf env 在部署阶段日志中打印它们,并且环境变量已在 IBM Cloud App Runtime UI 中设置并可见) ),但是部署阶段应用程序的 Node 运行时无法访问它们(它们未定义,导致下面的日志中出现错误)。

在应用程序文件(node js)中,我们使用 process.env.VARIABLE_NAME 来访问环境属性。

如果我们在 IBM Cloud 应用程序中手动设置环境变量,然后从本地终端进行 cf 推送,那么该应用程序也可以正常工作。

请参阅下面的设置和部署阶段使用的 bash 脚本。构建阶段成功运行。

<小时/>

日志中的错误:

[APP/PROC/WEB/0] ERR Error: Insufficient credentials provided in constructor argument. Refer to the documentation for the required parameters. Common examples are username/password and iam_access_token.
[APP/PROC/WEB/0] ERR at AssistantV2.BaseService.initCredentials (/home/vcap/app/node_modules/ibm-cloud-sdk-core/lib/base_service.ts:317:15)
[APP/PROC/WEB/0] ERR at AssistantV2.BaseService (/home/vcap/app/node_modules/ibm-cloud-sdk-core/lib/base_service.ts:153:27)
[APP/PROC/WEB/0] ERR at new AssistantV2 (/home/vcap/app/node_modules/ibm-watson/assistant/v2.ts:51:5)
<小时/>

设置阶段脚本:(环境属性在此阶段定义为安全属性。)

#!/bin/bash
cf push "${CF_APP}"

# Set environment variables that will be used after build the app
cf set-env "${CF_APP}" WATSON_ASSISTANT_APIKEY "${WATSON_ASSISTANT_APIKEY}"
cf set-env "${CF_APP}" WATSON_ASSISTANT_WORKSPACE "${WATSON_ASSISTANT_WORKSPACE}"
cf set-env "${CF_APP}" WATSON_ASSISTANT_ASSISTANT_ID "${WATSON_ASSISTANT_ASSISTANT_ID}"

# Restage app to get the new credentials availables
cf restage "${CF_APP}"
<小时/>

部署阶段脚本:(或多或少相当于cf推送)

#!/bin/bash

# Push app
if ! cf app $CF_APP; then
cf push $CF_APP
echo "no existing app, so doing fresh push"
else
OLD_CF_APP=${CF_APP}-OLD-$(date +"%s")
rollback() {
set +e
if cf app $OLD_CF_APP; then
cf logs $CF_APP --recent
cf delete $CF_APP -f
cf rename $OLD_CF_APP $CF_APP
fi
exit 1
}
set -e
trap rollback ERR
cf rename $CF_APP $OLD_CF_APP
cf push $CF_APP
cf delete $OLD_CF_APP -f
fi
# Export app name and URL for use in later Pipeline jobs
export CF_APP_NAME="$CF_APP"
export APP_URL=http://$(cf app $CF_APP_NAME | grep -e urls: -e routes: | awk '{print $2}')
# View logs
#cf logs "${CF_APP}" --recent

最佳答案

我在 IBMCloud 上部署了使用 WatsonAssistant 的 CloudFoundry 应用程序,并且获得了这种形状的变量。

process.env.CONVERSATION_WORKSPACE || '当变量未定义时使用此(XXXX-XXXX)'

process.env.CONVERSATION_ASSISTANT || 'XXXX-XXXX-XXXXX-XXXX'

你也可以使用

本地环境的.env文件

在 IBMCloud 上,我设置了此形状的变量。

enter image description here

enter image description here

关于node.js - 如何使用 IBM Cloud Toolchain 访问 Node js 应用程序中的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56528951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com