【问题标题】:Node module missing when running on Azure在 Azure 上运行时缺少节点模块
【发布时间】:2017-01-18 07:32:46
【问题描述】:

更新我的 hubot 项目后,它不再在 Azure 上运行。我可以在 OS X 和 Windows 上本地运行干净的副本,但在 Azure 上出现以下错误

错误无法加载适配器松弛 - 错误:找不到模块“hubot”

在本地,我安装了 node 6.9.1 和 npm 3.10.9。 Azure 分别使用 6.9.0 和 3.10.8 版本。

不幸的是,我还没有弄清楚如何收集更多信息,因为节点应用程序似乎没有达到它产生任何更详细输出的地步。

该项目和 Azure 网站最初是去年创建的,在我更新了 npm 依赖项和 node 版本后开始失败。但是,在恢复到节点 4.x 和 npm 2.x 或节点 0.10.x 或 npm 1.x 后,我仍然遇到相同的错误。

这是我的大部分未修改的hubot project that reproduces the error。自述文件包含我将其部署到 Azure 所采取的步骤。

任何见解将不胜感激

编辑 1

package.json

...
"dependencies": {
    "coffee-script": "^1.11.1",
    "hubot": "^2.19.0",
    "hubot-diagnostics": "0.0.1",
    "hubot-google-images": "^0.2.6",
    "hubot-google-translate": "^0.2.0",
    "hubot-help": "^0.2.0",
    "hubot-maps": "0.0.2",
    "hubot-pugme": "^0.1.0",
    "hubot-rules": "^0.1.1",
    "hubot-scripts": "^2.17.2",
    "hubot-shipit": "^0.2.0",
    "hubot-slack": "^4.2.1"
},
...

hubot 在我的 package.json 依赖项中列出 - 如果不是,它将不会在本地运行。我知道 kudu 运行 npm install --production,所以我确保它在依赖项而不是 devDependencies 中。

编辑 2

Gary Liu - MSFT 能够阐明原因并提供了一种解决方法,但是为什么hubot-slack: 4.+ 在 Azure 上运行而不在其他任何地方运行?

【问题讨论】:

  • 您必须确保您的 packages.json 文件已更新,并且满足您的应用程序运行的所有要求。您也可以尝试使用应用服务控制台手动安装所有依赖项。
  • @BrunoFaria 如果您的意思是导航到 wwwroot 并从 kudu 控制台或 azure 门户控制台运行 npm install --production,那么是的,我已经做到了。
  • 您是否尝试在您的 packages.json 中指定节点版本,而不是通过控制台更新? “引擎”:{“节点”:版本}
  • @BrunoFaria 是的,当我尝试恢复到旧版本时,这就是我更改 node 和 npm 版本的方式:-(
  • @Enrico 它在我的网站上运行良好,我无法按照您的步骤重现错误消息。请告诉我您在哪一步收到错误消息?

标签: node.js azure azure-web-app-service iisnode kudu


【解决方案1】:

您可以尝试在应用设置下方进行设置,而不是降级 hubot-slack,这应该可以解决问题

键:NODE_PATH

值:D:\home\site\wwwroot\node_modules

由于某种原因,hubot-slack 需要全局安装 hubot :(

https://github.com/slackapi/hubot-slack/issues/28

【讨论】:

    【解决方案2】:

    我成功重现了你的问题,经过多次测试,似乎在高版本依赖hubot-slack时会出现问题。请尝试我的步骤。

    1. 转到应用服务编辑器(预览版)

      转到门户,选择您的应用服务,点击应用服务编辑器(预览版),然后点击开始

    2. package.json 中将"hubot-slack": "^4.2.1" 更改为"hubot-slack": "^3.4.2"

    3. 单击控制台,然后运行以下命令:npm install –production

    4. NPM安装完成后,点击运行,就搞定了。

    【讨论】:

    • 谢谢!这是一个很好的解决方法,但不能解决根本问题。为什么hubot-slack 4.x 在本地运行时(在 OS X 和 Windows 上)不能在 Azure 上运行? Azure 环境显然有些不同,但我一直无法弄清楚。
    • hubot-slack 版本 3.x 和 4.x 之间,它们从 slack-client: ~1.4.0 更改为 @slack/client: ~3.4.0。我想知道问题是切换到范围依赖还是其他什么,因为它是版本的巨大飞跃:-/
    • 让你知道我也有同样的问题......希望他们能让我们知道根本原因。
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 2020-11-07
    • 1970-01-01
    • 2020-07-01
    • 2018-05-17
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多