Node.js 通过 A2 托管上传的网络应用程序 - CSS 的路径问题

Node.js web app uploaded through A2 Hosting - pathing issue with CSS

我目前正在学习 node.js 并且还很新,所以对于第一个问题可能效率低下或格式错误,我提前表示歉意。我正在上传一个单页测试来了解如何使用 A2 的 node.js 服务。

到目前为止,我已经按照 A2 教程“如何使用 Node.js 选择器使用 cPanel 创建 Node.js 应用程序”(https://www.a2hosting.com/kb/cpanel/cpanel-software/create-application-with-nodejs-selector) and this tutorial on syncing git repositories (https://medium.com/@pampas93/host-your-node-js-app-on-shared-hosting-go-beyond-localhost-73ab923e6691) 进行操作,并且我已经能够使一切正常工作除了主页

(位于dirname/repositories/test/views/home-visitor.ejs)

不会读取我上传的CSS文件

(位于:dirname/repositories/test/public/main.css)

部分图片无法加载。没有文件名拼写错误或正斜杠“/”语法不一致,所有图像共享相同的文件夹路径。

(位于:dirname/repositories/test/public/images)

因此 node.js 应用仅显示为纯 HTML。我已经将完全相同的 app/git 存储库上传到 Heroku 并且读取了 CSS 并且显示了所有图像,所以我试图弄清楚在专门上传到 A2 的托管服务时我遇到了哪些路径问题。

当我在浏览器上检查 'inspect' 以查找非工作应用程序页面时,我收到以下控制台消息:

"Refused to apply style from 'http://domainname.com/main.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled."

Failed to load resource: the server responded with a staus of 404 () nonWorkingImageExample.png:1

Failed to load resource: the server responded with a staus of 404 () anotherNonWorkingImageExample.png:1

http://domainname.com/test/main.css 发送到 404 页面

app.js:


const express = require("express")
const app = express()

let port = process.env.PORT
if (port == null || port == "") {
  port = 3000
}

app.use(express.static("/public/"))
app.set("views", "views")
app.set("view engine", "ejs")

app.get("/test", function (req, res) {
  res.render("home-visitor")
})

app.listen(3000)

我正在测试的页面:home-visitor.ejs:

<!DOCTYPE html>
    <html><head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width,initial-scale=1">
            
        <link rel="stylesheet" href="main.css" type="text/css">
    </head>
    <header>          
        <div class="forMobile mobileHeader">
            <div class="mobileLogo">
                <a href="#"><img src="images/workingImageExample.png" alt="Image Description"> 
                </a>
            </div>
        </div>  
    </header>
            
   <div class="forDesktop centerContent tempMssg">"Lorem flexitarian salvia offal umami. Sartorial swag drinking portland cray. Godard jianbing retro thundercats hella tilde. "
            
        <br><br> 
        <a href="#" target="_blank" rel="noopener noreferrer">
            <img src="images/nonWorkingImageExample.png" alt="Twitter Logo Link" width="35px" height="35">
        </a>
    </div>                  
    <div class="forMobile mobileUpperBG">
        <img src="images/anotherNonWorkingImageExample.png" alt="upper left bg image">
    </div>
</html>

我希望熟悉在 A2 上托管 node.js 应用程序的人可以提供帮助,感谢您花时间阅读这个问题。

此解决方案的全部功劳归功于 VictoryFlame 的视频 https://www.youtube.com/watch?v=BAD5JyOymRg.

我最终编辑了 app.js 路径我的 public 文件夹的方式,并更新了我 link 在我的 .ejs 文件中编辑 CSS 和图像文件的方式:

app.js:

const express = require("express")
const app = express()
const path = require("path")

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

app.use("/test1/static", express.static("public/"))

app.get("/test1", function (req, res) {
  res.render("home-visitor")
})

app.listen()

我将样式 link 重新格式化为 CSS 页面并对图像使用此路径语法:

首页-visitor.ejs:

<link rel="stylesheet" href="https://domainname.com/test1/static/home.css">

<a href="#" target="_blank" rel="noopener noreferrer">
<img src="/test1/static/images/imageWorksNow.png" alt="Twitter Logo Link" width="35px" height="35"></a> 

现在一切正常 served/linked 并出现。我希望有一天这对其他人有所帮助!