【问题标题】:ibmcloud-appid: nodejs how to do local development vs running in the IBM Cloud?ibmcloud-appid:nodejs 如何进行本地开发与在 IBM Cloud 中运行?
【发布时间】:2020-11-10 15:59:05
【问题描述】:

我正在与 appid-serversdk-nodejs 合作,我的代码可以正常工作,并且在本地和 IBM 云中一切正常。

但我必须手动切换 APP-URL (localhost:3000 vs .eu-gb.mybluemix.net) 我知道我可以在不提供护照设置的情况下做到这一点,但我怎样才能拥有一个适用于的代码库:

  • localdev 测试
  • ibm 云中的实例
  • ibm 中的生产实例 云

我说的是这段代码:

// The redirectUri value can be supplied in three ways:
// 1. Manually in new WebAppStrategy({redirectUri: "...."})
// 2. As environment variable named redirectUri
// 3. If none of the above was supplied the App ID SDK will try to retrieve
// application_uri of the application running on IBM Cloud and append a
// default suffix "/ibm/bluemix/appid/callback"
passport.use(new WebAppStrategy({
tenantId: "removed",
clientId: "removed",
secret: "removed",
oauthServerUrl: "https://eu-gb.appid.cloud.ibm.com/oauth/v4/REMOVED"
redirectUri: "https://REMOVED.eu-gb.mybluemix.net" + CALLBACK_URL
//redirectUri: "http://localhost:3000" + CALLBACK_URL
}));

更新: 我已将数据移至 .env 文件,但这并不能解决我的问题。

tenantId: process.env.APPID_tenantId,
clientId: process.env.APPID_clientId,
secret: process.env.APPID_secret,
oauthServerUrl: process.env.APPID_oauthServerUrl,
redirectUri: process.env.APPID_redirectUri + CALLBACK_URL

现在我必须更改 .env 文件,这会导致新的提交和构建。 我想利用 APP-ID 和我们在 IBM 云中的 Node 服务器之间的连接。

如果我不提供 redirectUri 或整个 WebAppStrategy,我会收到错误

【问题讨论】:

  • 你的意思是你目前已经把所有东西都硬编码了吗?查看可用于许多 prog 语言的 .env (dotenv) 之类的东西。您要么在本地环境中读取,要么从云部署中读取绑定
  • @data_henrik,是的,为了让它工作,我把所有东西都硬编码了。我从我的云部署中了解绑定的概念,但我无法让它工作。我正在寻找建议删除什么以及保留/添加什么。我知道如何在 Java 中做到这一点,但在 nodejs (react) 中我没有什么经验

标签: node.js ibm-cloud ibm-appid


【解决方案1】:

您正在使用 process.env.* 做正确的事情(技术上),当然还有多种其他方法可以做到这一点,但这是另一个主题(我个人在这些情况下经常使用 CUPS,.env 很容易导致您将秘密提交给版本控制的情况)

我确定您已在 App ID 实例中将所有 url:s 作为重定向 uri:s 提供(如果这是问题的话,无论如何都会给出非常明显的错误)。

您不会分享您遇到的错误是什么,但您可以检查一些事情。

a) 书中较老的技巧 - 对您的逻辑进行一些调试输出,以验证您设置为环境变量的值是否实际存在于运行时。

b) 正如您通常在云中使用 https 而在本地使用 http,您可能需要有条件地设置 饼干:{安全:真} 仅用于云部署,不适用于本地。

【讨论】:

  • 谢谢@jarkko。稍后我将分享错误消息,但我正在寻找一种在示例代码中实现此提示的方法://如果您的 node.js 应用程序在 IBM Cloud 上运行并已绑定,则不需要提供此参数到 // App ID 服务实例。在这种情况下,将使用 VCAP_SERVICES 环境变量获取 App ID 配置。
猜你喜欢
  • 2017-07-06
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
相关资源
最近更新 更多