Azure上的Express App无法加载状态为500的静态文件

时间:2019-02-14 15:40:38

标签: node.js azure express azure-web-sites

我正在Azure上部署Node.js Express应用程序,该应用程序无法加载静态css / js文件。静态文件在我的本地主机下正常工作:3000。但是在Azure上运行时,它会抛出内部服务器错误500。

我的Chrome中的错误如下:

获取https:///resources/css/style.css net :: ERR_ABORTED 500(内部服务器错误)。该css文件的目录树为/ public / resources / css

我认为我的静态文件路径正确,否则会看到404错误而不是500错误


app.use(express.static(path.join(__dirname, 'public')));


2 个答案:

答案 0 :(得分:1)

根据我的经验,我认为错误的部署会导致Azure上Node.js中内部服务器错误的错误代码500。因此,要解决此问题,请首先检查路径web.configsite/wwwroot文件的内容。还有来自Kudu Wiki页面Using a custom web.config for Node apps的标准示例web.config,您可以参考。

如果您的Node应用程序部署成功,您将看到不存在的静态文件的404 Not Found错误代码,而不是您所说的500

但是,本地变量和Azure变量__dirname有所不同。在本地,__dirname变量的值始终是启动节点进程的完整路径名,例如,如果在CMD中运行__dirname,则打印D:\home将返回nodeD:\home。但是在Azure上,如果尝试在Kudu控制台中运行命令__dirname,则在任何.路径中都将看到node -e "const path = require('path'); console.log(__dirname);"值,如下图所示。

enter image description here

因此,path.join(__dirname, 'public')的值始终为public,与IIS启动的节点的当前路径无关。因此,要解决此问题,请使用D:\home\site\wwwroot这样的绝对路径,而不要使用__dirname方法中的path.join变量,或者直接使用D:\home\site\wwwroot\public方法中的express.static

答案 1 :(得分:0)

解决了!

我检查了Azure诊断工具中的DetailedErrors日志文件。并显示500错误是由于以下原因造成的:

HTTP错误500.0-内部服务器错误 D:\ Python34 \ python.exe-FastCGI进程意外退出

实际上,在我的Azure App Service应用程序设置中,我打开了python 3.4版本,并且以某种方式尝试使用python处理我的静态请求时会蔚蓝。我只需在应用程序设置中关闭python版本,现在就可以成功加载静态文件。