此问题是关于使用未预先安装的节点模块的节点目标服务器部署代理。我们使用在本地运行的apigee边缘。
节点目标服务器在本地运行正常。
问题很简单:如何将此类代理与节点目标服务器一起部署到本地边缘?
我已经尝试像往常一样将代理打包到一个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"}}}
我还尝试使用' npm install'在本地安装模块。然后在zip中包含模块。但是,在这种情况下,导入失败会出现红色错误消息。当我在Web浏览器中重新加载api代理页面时,似乎实际上已经上传了包,并且显示加载进度的框超过了2000%。但是,加载完成后,无法部署它(显示标准的非特定错误消息)。
最后,我还使用http://apigee.com/docs/api-services/content/adding-nodejs-existing-api-proxy的语法尝试了apigeetool(我确实将python源代码中的url更改为我们的本地服务器)。在运行该工具之前,使用&nbsp install命令安装模块。结果是此错误消息:
导入新的应用程序%PROXYNAME%
/ V1 /组织/%ORGANIZATION%/ API的动作=进口&安培;名称=%的proxyName%
导入失败
/ V1 /组织/%ORGANIZATION%/ API的动作=进口&安培;名称=%的proxyName%
状态404:{"错误":{" faultstring":"分类失败
主机%IP%:%PORT%","详细信息":{"代码":" CLASSIFICATION_FAILED"}}}
答案 0 :(得分:0)
假设您正在使用OSX或* nix的风格:
在本地计算机上创建一个文件夹以包含您的Node脚本(例如/Development/myNodeProxy/
)。将脚本放在那里。 (例如server.js
)。
打开终端并cd
到您的脚本文件夹(/Development/myNodeProxy/
)。
使用npm
安装所需的模块(在没有全局npm install {modulename}
开关的情况下键入-g
)。 警告:Edge对于Express
的冲突版本不起作用,因此在部署之前需要npm remove express
。如果您最终收到错误(例如errno 32 broken pipe
),则可能还需要移除preinstalled on Edge的其他模块。
从同一目录中运行以下命令:
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}