在Azure应用程序服务上使用Node-sass快速应用程序

我有一个基本的节点Web应用程序使用快递,依赖于节点Sass库。

这是在Win64服务器上构build的,所以在npm安装过程中,由于当前的环境,它正在下载绑定二进制文件的x64版本。

当其部署到Azure应用服务时,由于与节点sass绑定二进制文件不兼容,会引发运行时错误,因为节点在Azure应用服务中运行32位…

错误:缺less绑定D:\ home \ site \ wwwroot \ node_modules \ node-sass \ vendor \ win32-ia32-48 \ binding.node节点Sass无法为当前环境find绑定:Windows 32位与Node.js 6.x的

find以下环境的绑定: – 带有Node.js 6.x的Windows 64位

当我明确检查32位绑定和重新部署我有时得到一个502网关错误…

502 – Web服务器在充当网关或代理服务器时收到无效的响应。 您正在查找的页面出现问题,无法显示。 当Web服务器(充当网关或代理)联系上游内容服务器时,它从内容服务器收到无效响应。

有时我只是得到一个500,但它不再把错误写入日志。

该应用程序显式依赖于node-sass-middleware软件包版本0.11,这取决于节点sass 4.3.0。

没有任何错误日志,我处于死胡同。 你以前遇到过这个问题,如果是的话,你是怎么解决的?

我利用Node-Sass示例应用程序进行了快速testing,使用本地git将示例项目部署到Azure Web Apps,它再现了您的问题。

通过部署日志:

远程:selectnode.js版本7.4.0。 使用package.json文件来select不同的版本。 远程:selectnpm版本4.0.5

并根据类似的错误信息:

find以下环境的绑定: – 带有Node.js 6.x的Windows 64位

我将package.json的node.js版本指定为:

 "engines": { "node": "= 6.9.1", "npm": "> 3" } 

然后通过本地git将其重新部署到Azure,并且示例工作正常。

对于您的进一步的500错误,您可以尝试利用应用程序服务编辑器来检查您的网站的输出。

从Azure门户input应用服务编辑器 ,通过单击显示输出button切换到输出部分,然后单击运行以启动应用程序。 在这里输入图像说明

我们最终通过换出节点sass-middleware来解决这个问题,并为node-sass添加一个npm重build步骤。 这里的关键区别在于,现在通过gulp在构build过程中呈现了css。 首先运行npm rebuild node-sass会调用绑定下载到生成服务器(如果需要的话),然后一个单独的任务将调用一个gulp任务来渲染css。

我们的问题的其余部分是由于web.config指定app.js作为入口点,但express4使用bin / www文件,并简单地引用app.js. bin / www是入口点的问题是,iisnode现在使用bin作为工作目录,这引起了根相对引用的问题。

我们没有浪费更多的时间去研究是否可以configuration一个不同的工作目录,而是简单地将bin / www移动到./server.js,并将web.config改为指向server.js

快递应用程序现在按照预期在azure色的网站上运行。