如何在使用未预先安装的节点模块的节点目标服务器上部署apigee代理



这个问题是关于使用未预装的节点模块的节点目标服务器部署代理的。我们在场地内使用顶点边缘跑步。

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

问题很简单:如何使用节点目标服务器将此类代理部署到本地顶点边缘?

尝试1

我试着像往常一样将代理打包到一个zip文件中,并使用"导入新版本"功能将其上传到web浏览器中。它对于更简单的代理(只使用预装的节点模块)运行良好。所有依赖项都列在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中。但是,在这种情况下,会出现一条红色错误消息:导入失败。当我在web浏览器中重新加载api代理页面时,看起来包实际上已经上传,显示加载进度的框超过了2000%。但是,当加载完成时,无法部署它(显示一条标准的不特定错误消息)。

尝试3

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

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

/v1/组织/%组织%/api?action=import&name=%PROXYNAME%

导入失败

/v1/组织/%组织%/api?action=import&name=%PROXYNAME%

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

主机%IP%:%PORT%","详细信息":{"代码":"CLASSIFICATION_FAILED"}}}}

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

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

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

  3. 使用npm安装所需的模块(键入npm install {modulename},不带全局-g开关)注意事项:Edge在使用冲突版本的Express时表现不佳,因此在部署之前需要使用npm remove express。如果最终出现错误(如errno 32 broken pipe),您可能也需要删除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}

最新更新