我正在使用一个名为swagger-tools的节点模块,它在内部依赖于lodash。安装swagger工具时,其node_modules文件夹的深度非常大,这会导致我的Azure应用程序(Windows服务器)出错。我在某处看到这个问题可以通过使用npm 3来解决,而npm 3安装在azure服务器上,我无法强制它使用它 - 错误日志表明正在使用npm 2。这是我在package.json中的方式:
"engineStrict": true,
"engines" : {
"npm" : ">=3.0.0"
}
节点版本是4.4.7。 如果有人知道解决问题的不同方法,我会很高兴。
答案 0 :(得分:0)
你是正确的,NPM 3应该解决这个问题,因为它使用平面文件系统而不是嵌套的依赖关系,其中windows文件系统不能很好地支持。 要强制NPM 3,它实际上取决于您的发布方法(git / vs)。 这是强制NPM 3的指南 - https://blogs.msdn.microsoft.com/azureossds/2015/09/13/npm3-on-azure-web-apps/
答案 1 :(得分:0)
如{@ 3}}所述,在Custom Deployment Script的Azure Web Apps文件系统上将npm路径设置为npm 3的绝对位置将是一个解决方案。
此外,还有一个更简单的解决方法。您可以在package.json
中将nodejs版本定义为包含npm 3的版本。包含npm3的最低nodejs版本为5.0.0
。
因此,您只需修改engines
中的package.json
部分:
"engines" : {
"node" : "5.0.0"
}
您可以参考https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/了解更多信息。