【问题标题】:Azure Emulator Won't Launch When Using Node.js + Socket.io使用 Node.js + Socket.io 时 Azure 模拟器不会启动
【发布时间】:2012-02-10 20:42:29
【问题描述】:

我正在使用适用于 Node.js 的 Windows Azure SDK,但遇到了一个非常奇怪的障碍。

我可以使用 Windows Azure 模拟器在本地测试 Azure Node.js 应用程序,直到我安装了 Socket.io。然后模拟器拒绝启动,吐槽:

Creating local package...
Starting Emulator...
Start-AzureEmulator : An unexpected failure occurred.  Details:
The compute emulator had a error: Can't locate service model..
At line:1 char:20
+ Start-AzureEmulator <<<<  -Launch
    + CategoryInfo          : CloseError: (:) [Start-AzureEmulator], InvalidOperationException
    + FullyQualifiedErrorId : AzureDeploymentCmdlets.Cmdlet.StartAzureEmulatorCommand

奇怪的是,我可以将相同的代码/项目部署到 Azure,并且运行良好。只有模拟器拒绝工作。

同样奇怪的是,我无法在另一台计算机上复制它。这似乎只是我的主要工作箱上的一个问题。我试过npm cache clear 来重新安装 Socket.io。我已卸载并重新安装了 Azure SDK、Azure 模拟器和 Azure Node.js 工具。没有什么能解决这个问题。

有什么想法吗?部署到云端 10 到 15 分钟后才能进行测试,这令人非常沮丧。

更新:
我应该澄清一下,这种情况只发生在工作人员角色(没有网络角色)。

【问题讨论】:

    标签: node.js azure emulation socket.io


    【解决方案1】:

    凭直觉(因为我认为我过去可能在其他地方遇到过类似的错误),我缩短了解决问题的项目目录的名称。

    我感觉这可能与文件系统中项目文件的路径长度有关。我知道 TFS 也有类似的问题。我通常尽量将所有项目保存在 C:\Dev 中,并且没有太多嵌套目录或长项目名称。

    看到此错误可能还有其他原因,但这解决了我的问题。

    【讨论】:

    • 我一直在关注 cloud-services-nodejs-chat-app-socketio Azure 教程,遇到了这个问题,移动到更短的目录路径也对我有用。我的原始路径没有空格,大约长了 25 个字符(包括 \ 分隔符)。这样的错误不应该再发生......谁负责? :)
    • 我后来发现这是 Windows 的限制,请参阅stackoverflow.com/questions/1880321/…
    【解决方案2】:

    您是否在网络角色中使用 Express 框架?我在模拟器中的 web 角色中使用带有 node.js 的 Express 框架的基本示例遇到了权限问题(这很可能是另一个症状)。

    这是由打包错误引起的。解决方法是从 Web 角色中删除 server.js.logs 目录。然后,您可以使用 loggingEnabled 参数关闭 IISNode 日志记录。

    【讨论】:

    • 这可能适用于 web 角色和 Express,但不适用于工作角色和 socket.io,这是我试图在 Azure 模拟器中运行的。
    【解决方案3】:

    我们会在不久的下一个 SDK 更新中解决此问题。

    【讨论】:

    • 所以我并没有疯掉。很高兴知道。现在会有什么变通办法吗?
    • 嘿 Glenn,我刚刚获取了最新版本的工具(来自上周的大型 Azure 更新),但我仍然遇到同样的问题。创建一个新项目:New-AzureServiceProject testAdd-AzureNodeWorkerRole,导航到 WorkerRole1、npm install socket.ioStart-AzureEmulator -Launch,它从问题中吐出相同的错误。你知道是否有计划解决这个问题吗?
    • 尝试按照 bitsprint 的建议将您的应用文件夹移动到较短的路径。为我工作。
    【解决方案4】:

    此问题似乎已在 2012 年 8 月发布的适用于 Node.js 的 Windows Azure SDK(版本:0.6.2)中得到修复。这可以通过 Web Platform Installer 4.0 安装。

    【讨论】:

      【解决方案5】:

      “现在会不会有任何变通方法?”

      我意识到我在 StackOverflow 上的声誉很低,但我之前的帖子确实包含“解决方法”这句话。 (感谢 Glenn 和他的团队将我带到另一个论坛。)

      【讨论】:

      • 抱歉,没有。我什至没有使用 Web 角色——我只使用了工作者角色,因为 IIS 7 不能很好地与 Web 套接字配合使用。所以我没有 Web.config 文件,也没有 server.js.logs。因此,您的解决方法对我不起作用,因此我没有将其标记为答案。您发布的这个次要答案根本不是答案。答案不应用作 cmets 或投诉。
      猜你喜欢
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2016-10-21
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      相关资源
      最近更新 更多