Azure上的Express App无法加载静态文件,状态为500
我在Azure上部署Node.js Express应用程序,该应用程序无法加载静态css / js文件。静态文件在我的localhost: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')));
回答如下:
根据我的经验,我认为错误的部署导致Azure上的Node.js中的内部服务器错误的错误代码500
。所以要修复它,请首先检查路径web.config
中site/wwwroot
文件的内容。还有来自Kudu wiki页面web.config
的标准样本Using a custom web.config for Node apps
,你可以参考。
如果您的Node应用程序已成功部署,您将看到一个不存在的静态文件的404 Not Found
错误代码,而不是您所说的500
。
但是,本地和Azure之间的变量__dirname
有所不同。在本地,__dirname
变量的值始终是启动节点过程的完整路径名,例如,如果在__dirname
的CMD中运行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
。
Azure上的Express App无法加载静态文件,状态为500
我在Azure上部署Node.js Express应用程序,该应用程序无法加载静态css / js文件。静态文件在我的localhost: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')));
回答如下:
根据我的经验,我认为错误的部署导致Azure上的Node.js中的内部服务器错误的错误代码500
。所以要修复它,请首先检查路径web.config
中site/wwwroot
文件的内容。还有来自Kudu wiki页面web.config
的标准样本Using a custom web.config for Node apps
,你可以参考。
如果您的Node应用程序已成功部署,您将看到一个不存在的静态文件的404 Not Found
错误代码,而不是您所说的500
。
但是,本地和Azure之间的变量__dirname
有所不同。在本地,__dirname
变量的值始终是启动节点过程的完整路径名,例如,如果在__dirname
的CMD中运行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
。