【问题标题】:node js on azure - deeply nested node modules cause errorazure 上的节点 js - 深度嵌套的节点模块导致错误
【发布时间】:2016-08-16 14:44:47
【问题描述】:

我正在使用一个名为 swagger-tools 的节点模块,它在内部依赖于 lodash。安装 swagger 工具时,其 node_modules 文件夹的深度非常大,这导致我的 azure web 应用程序(Windows 服务器)出错。我在某处看到这个问题可以通过使用 npm 3 来解决,虽然 npm 3 安装在 azure 服务器上,但我不能强制它使用它 - 错误日志表明正在使用 npm 2。这就是我在 package.json 中的做法:

"engineStrict": true,
"engines" : {
  "npm" : ">=3.0.0"
}

节点版本为4.4.7。 如果有人知道解决问题的不同方法,我会很高兴。

【问题讨论】:

    标签: node.js npm azure-web-app-service lodash


    【解决方案1】:

    NPM 3 应该解决这个问题是正确的,因为它使用平面文件系统,而不是 Windows 文件系统不能很好支持的嵌套依赖项。 要强制使用 NPM 3,它实际上取决于您的发布方法(git/vs)。 这是强制 NPM 3 的指南 - https://blogs.msdn.microsoft.com/azureossds/2015/09/13/npm3-on-azure-web-apps/

    【讨论】:

      【解决方案2】:

      如@shachar 所述,将npm 路径设置为Custom Deployment Script 中Azure Web Apps 文件系统上npm 3 的绝对位置将是一个解决方案。

      此外,还有一个更简单的解决方法。您可以将package.json 中的nodejs 版本定义为包含npm 3 的版本。包含npm3 的最低nodejs 版本是5.0.0

      因此,您可以简单地修改 package.json 中的 engines 部分:

      "engines" : {
        "node" : "5.0.0"
      }
      

      您可以参考https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/了解更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-12
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 2019-09-01
        • 2017-10-26
        相关资源
        最近更新 更多