index.html 尝试加载 css 和脚本时获取 503 状态码 [nodejs + express]

Posted

技术标签:

【中文标题】index.html 尝试加载 css 和脚本时获取 503 状态码 [nodejs + express]【英文标题】:Getting 503 status code when index.html tries to load css and scripts [nodejs + express] 【发布时间】:2015-12-14 01:52:57 【问题描述】:

我正在使用静态中间件来提供样式表和脚本

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

一切都在本地主机上运行,​​但是一旦我将应用程序部署到 openshift,我会为页面尝试加载的每个静态文件获得 503 代码。 如果我打开另一个浏览器选项卡并直接通过其中一个文件的 URL,我实际上会得到该文件。

P.S.:我使用 express-react-views 作为视图引擎。

【问题讨论】:

您是否使用浏览器控制台检查并验证了请求 url 是否正确? 是的,请求的 URL 是正确的,如果我在另一个浏览器选项卡中打开它,它会正确地返回 css 文件。但是由于服务器响应为503 (Service Temporarily Unavailable)html 页面无法加载。这很奇怪,这就是为什么我不明白问题出在哪里。 也许你把app.use(app.router);放在app.use(express.static(path.join(__dirname, 'public')));之前?或者你的 js 文件在另一个文件夹中? ***.com/questions/19620239/… 我想我找到了问题,但我还不知道如何解决它。我查看了应用程序的日志(部署在 openshift 中),我发现了这个错误:错误:EACCES,权限被拒绝 '/var/lib/openshift/55ed4f447628e1c8a8000070/.babel.json' 正如我所说我正在使用 express-react-视图作为 express 引擎,它使用 babel 将 JSX 编译回 EC5。访问 .babel.json 有问题。不过,我正在研究如何解决这个问题 【参考方案1】:

基本上,我使用 express-react-views 作为视图引擎,它包括使用缓存进行转译优化的 Babel.js。问题是它试图将缓存文件写入需要更高权限的目录中。为了解决我禁用了缓存。

process.env.BABEL_DISABLE_CACHE = 1;

我希望这可以帮助其他遇到同样问题的人。

【讨论】:

以上是关于index.html 尝试加载 css 和脚本时获取 503 状态码 [nodejs + express]的主要内容,如果未能解决你的问题,请参考以下文章

Index.html 脚本标记值在运行时被替换

Vue 在哪里加载脚本标签?

外部 js 脚本不适用于使用 jQuery 加载的页面

AngularJS- 使用 LazyLoad- Webpack 动态加载脚本文件

React 根组件不会加载整个 index.html

js读取html文件,css和js加载不进来