Azure工作角色中的Node JS Azure SDK无法工作

3
我使用这段代码从在 Azure Worker Role 运行的 Node.js 文件中调用服务总线队列。
var azure = require('azure'),
    config = require('./config');
var serviceBusClient = azure.createServiceBusService(config.sbConnection);
console.log("Start");
serviceBusClient.getQueue("myqueue", function (error, queue) {
    if(error){
        console.log(error);
    }
   console.log(queue);
});
console.log("End");

在这段代码中,工作角色只记录“开始”和“结束”,但是getQueue API不起作用,也没有抛出任何错误,在我的本地机器上运行正常并记录响应。
1个回答

0

我使用了你的node.js脚本代码在新的云服务中进行了测试,并部署到Azure。我配置了.csdef文件将输出导入到日志文件中,例如:<ProgramEntryPoint commandLine="node.cmd .\worker.js &gt; sblog.txt" setReadyOnProcessStart="true" />以检查node.js脚本的输出。

在我的端上一切都正常。请确认您的队列中是否有消息,并且您的.csdef文件是否有任何特定的配置。

更新

根据https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/中的描述:

如果您正在Azure Cloud Service(Web或Worker角色)中托管应用程序,并且这是您第一次部署该应用程序,则Azure将尝试使用与您在开发环境中安装的Node.js版本相同的版本,如果它与Azure上可用的默认版本之一匹配。

我们可以通过powershell命令检查云服务中可用的nodejs版本:Get-AzureServiceProjectRoleRuntime。可用版本列表为:0.6.170.6.200.8.40.8.220.8.260.10.21

如果您想使用自定义的nodejs版本,您可以将整个node.js执行应用程序文件夹打包到您的云服务应用程序中。并修改您的云服务应用程序中的node.cmd文件,以指向您云服务包中的node.js执行应用程序路径。


是的,消息在队列中可用,这是我的.csdef文件代码<Environment> <Variable name="PORT"> <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/Endpoints/Endpoint[@name='HttpIn']/@port" /> </Variable> <Variable name="EMULATED"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable> </Environment> <EntryPoint> <ProgramEntryPoint commandLine="node.cmd .\check.js > sblog.txt" setReadyOnProcessStart="true" /> </EntryPoint> - AvinashSachdewani
我在package.json中添加了以下行以更改节点版本("engines": {"node": "4.4.7", "iisnode": "*"}),并在发布应用程序之前运行了此cmdlet(Set-AzureServiceProjectRole WebRole1 Node 4.4.7)。但是,当我在工作角色中运行命令(node -v)时,它显示的是0.6.20版本。因此,在应用程序中使用哪个Node.js版本? - AvinashSachdewani
1
你的整个内容在.csdef文件中吗?你能让它在使用Visual Studio构建新的云服务时正常工作吗? - Gary Liu
感谢Gary的支持,现在它正常工作了。我已经将Node.js版本更改为(0.10.21),并在csdef文件中添加了一个启动标签。 但问题是没有错误消息出现,所以很难追踪问题。 - AvinashSachdewani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接