【问题标题】:CSS throwing 503 error with node.js on a2hostingCSS 在 a2hosting 上使用 node.js 引发 503 错误
【发布时间】:2021-01-08 22:34:54
【问题描述】:

我遵循了这个关于在 a2hosting 上设置 node.js 的精彩教程:https://www.youtube.com/watch?v=BAD5JyOymRg

除了 CSS 没有在 Firefox 或 Chrome 中加载并且由于某种原因引发 503 错误之外,一切似乎都正常。如果我将href 指向根本没有文件,它也会引发 503 错误。我尝试将 href 链接更改为 /stylesheets/style.css 或移动 style.css 但没有任何运气。

任何帮助将不胜感激!

server.js:

var express = require('express');
var app = express();
var path = require('path');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use('/testapp/static', express.static('public'));

app.get('/testapp', (req, res) => {
  res.render('index', { title: 'Express' });
});

app.listen();

package.json:

{
  "name": "app",
  "version": "1.0.0",
  "description": "My App",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "^6.14.7",
    "ejs": "~2.6.1"
  },
  "author": "",
  "license": "ISC"
}

index.ejs:

<!DOCTYPE html>
<html>
    <head>
        <link rel='stylesheet' href='http://*mysite*.com/testapp/static/stylesheets/style.css' />
    </head>
    <body>
        <h1>Hello <%=title%></h1>
    </body>
</html>

style.css:

body {
   background-color: red;
}

这是文件夹结构:

testapp
-public
--stylesheets
---style.css
-views
--index.ejs
-server.js
-package.json
-node_modules

【问题讨论】:

  • 您的网站是否驻留在代理(如 nginx)后面?
  • 据我所知,它是使用 a2hosting 的,我还没有做任何花哨的事情
  • 你能分享来自 503 的 http 响应头吗? 503 响应正文是空的吗?您是否在控制面板主页可访问的 a2hosting 错误日志中看到任何消息?
  • 尝试使用绝对路径app.use('/testapp/static', express.static(path.join(__dirname, 'public'))),如果可行,请告诉我们

标签: css node.js express hosting


【解决方案1】:

如果您能够看到 html 而不是 CSS,请尝试调整您指定目录位置的第二个参数。

app.use('/testapp/static', express.static('public'));

您提供给 express.static 函数的路径是相对于您启动节点进程的目录 (link)。

我提供了一个示例代码,您可以参考我将一个文件夹放在目录内和一个文件夹外的位置。 - https://codesandbox.io/s/sweet-grass-0dxvh?file=/testapp/server.js

【讨论】:

    【解决方案2】:

    更改自

    app.use('/testapp/static', express.static('public'));
    

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

    有关快速服务静态文件,请参阅 link1link2

    【讨论】:

      【解决方案3】:
      1. 请确保您的 testapp 是正确的应用程序 URL(不是应用程序根目录

      2. 您的起始文件名为 server.js,但您的 package.json 引用 app.js。您没有一些附加 文件可以代替您认为的文件吗?请检查应用程序启动文件是否正确。

      3. 如果第一个选项没有帮助,请按照说明检查/home/&lt;username&gt;/public_html 目录中的.htaccess 文件配置https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts#Integrating-a-Node.js-application-with-the-web-server

      如果某些选项有帮助,或者您需要一些额外的信息或研究,请告诉我。

      【讨论】:

      • 由于 html 页面正在运行,我认为您的第一个选项不适用,但第三个选项确实可以发生
      • 您至少在第一点上可能是对的。实际上,第二个选项也是可能的恕我直言
      猜你喜欢
      • 1970-01-01
      • 2018-02-22
      • 2017-01-21
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多