我正在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')));
答案 0 :(得分:1)
根据我的经验,我认为错误的部署会导致Azure上Node.js中内部服务器错误的错误代码500
。因此,要解决此问题,请首先检查路径web.config
中site/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
将返回node
在D:\home
。但是在Azure上,如果尝试在Kudu控制台中运行命令__dirname
,则在任何.
路径中都将看到node -e "const path = require('path'); console.log(__dirname);"
值,如下图所示。
因此,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版本,现在就可以成功加载静态文件。