【问题标题】:How to deploy apigee proxies with node target servers that use node modules that are not pre-installed?如何使用使用未预安装的节点模块的节点目标服务器部署 apigee 代理?
【发布时间】:2014-06-08 00:40:36
【问题描述】:

这个问题是关于使用未预安装的节点模块的节点目标服务器部署代理。我们使用 apigee edge 在本地运行。

节点目标服务器在本地运行良好。

问题很简单:如何将具有节点目标服务器的此类代理部署到本地 apigee edge?

尝试 1

我已经尝试像往常一样将代理打包成一个 zip 文件,并使用“导入新修订版”功能将其上传到网络浏览器中。它适用于更简单的代理(仅使用预安装的节点模块)。所有依赖项都列在 packages.json 文件中。部署代理时,每次 api 调用都会导致:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 148

{"fault":{"faultstring":"Script node executed prematurely: Script exited with code 0","detail":{"errorcode":"messaging.runtime.ScriptExitedError"}}}

尝试 2

我还尝试使用“npm install”在本地安装模块,然后将模块包含在 zip 中。但是,在这种情况下,会出现导入失败的红色错误消息。当我在网络浏览器中重新加载 api 代理页面时,似乎包实际上已上传,并且显示加载进度的框超过 2000%。但是,加载完成后,无法部署它(显示标准的非特定错误消息)。

尝试 3

最后,我还使用http://apigee.com/docs/api-services/content/adding-nodejs-existing-api-proxy 的语法尝试了apigeetool(我确实将python 源代码中的url 更改为我们的本地服务器)。在运行该工具之前,使用“npm install”安装模块。结果是这个错误信息:

正在导入新应用程序 %PROXYNAME%

/v1/organizations/%ORGANIZATION%/apis?action=import&name=%PROXYNAME%

导入失败

/v1/organizations/%ORGANIZATION%/apis?action=import&name=%PROXYNAME%

状态为 404:{"fault":{"faultstring":"分类失败

主机 %IP%:%PORT%","detail":{"code":"CLASSIFICATION_FAILED"}}}

【问题讨论】:

  • 您好 Joakim,Apigee Edge 根本不支持某些模块。这是一个列表apigee.com/docs/api-services/content/…你正在尝试哪个模块?
  • 另外,CLASSIFICATION_FAILED 相当于 Apigee Edge 的 404。看来您可能只是为服务器设置了错误的 URL。
  • @SantanuDey:现在我使用 wcf.js 和 xml2js。这些都不会显示在您链接到的页面中。
  • @ap-andrew,您是否知道 apigeetool 尝试使用的 API 是否在本地不可用?
  • Joakim,云和本地版本之间的 API 是一致的,所以是的,您可以使用该 API。

标签: node.js apigee


【解决方案1】:

假设您使用的是 OSX 或 *nix:

  1. 在本地计算机上创建一个文件夹以包含您的 Node 脚本(例如 /Development/myNodeProxy/)。把你的脚本放在那里。 (例如server.js)。

  2. 打开终端和cd 到您的脚本文件夹 (/Development/myNodeProxy/)。

  3. 使用npm 安装您需要的模块(键入npm install {modulename},不带全局-g 开关)。 警告:Edge 不能很好地处理 Express 的冲突版本,因此您需要在部署之前 npm remove express。如果您最终遇到错误(例如 errno 32 broken pipe),您可能还需要删除其他 preinstalled on Edge 模块。

  4. 在同一目录下,运行以下命令:

    apigeetool deploynodeapp -n {name-of-your-proxy} -o {org} -e {environment} -b {proxy-basepath} -d ./ -m server.js -u {your-email-address/username} -p {password}

【讨论】:

  • 这不是尝试部署到apigee的云版吗?我们在本地运行 apigee edge。
  • 啊,是的。我会看看我能为你找到什么。
猜你喜欢
  • 2018-06-11
  • 2016-11-19
  • 2017-05-08
  • 2014-11-04
  • 2021-05-23
  • 2014-06-12
  • 1970-01-01
  • 2022-01-03
  • 2015-11-08
相关资源
最近更新 更多