无法加载资源:服务器在 Nodejs 应用程序中响应状态为 404(未找到)问题

Zak*_*Zak 5 html node.js

我需要帮助。我在这里查找了解决方案,但仍然找不到。所以我在Goorm ide中练习一些东西,但我已经走进了死胡同。我试图通过将脚本放在页脚中来链接 main.js(位于 js 文件夹中)文件。但我收到一个错误,上面写着

Failed to load resource: the server responded with a status of 404 (Not Found) 我还在 lib 文件夹中上传了一些 png 文件,在尝试访问 ejs 模板中的这些文件后,我遇到了相同的错误。

根文件夹由js、lib 和views 文件夹以及其他一些不相关的文件夹组成。

为了链接 footer.ejs 中的 main.js(位于视图内的partials 文件夹中),我使用了 <script type="text/javascript" src="../../js/main.js"></script>. 上传到 lib/images 文件夹中的 png 图像,我尝试从视图中的 ejs 模板访问这些图像,所以我使用了 <img src="../lib/images/image1.png">. 我在这两种情况下都遇到了这个错误。如果有人可以提供帮助,我们将不胜感激。这就是我的根文件夹的样子 - 在此输入图像描述

编辑: 这是 app.js 代码:

require('dotenv').config();
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var indexRoute = require("./routes/index");
var flash = require("connect-flash-plus");
var session = require('express-session');

// APP CONFIG
app.use(express.static(__dirname + "/public"));
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({extended:true}));
app.set('json spaces', 2);
app.use(session({
    secret: 'boom',
    cookie: { maxAge: 60000 },
    saveUninitialized: true,
    resave: true
}));

app.use(flash());

app.use(function(req, res, next) {
    res.locals.error = req.flash("error");
    next();
});


// routes

app.use(indexRoute);

app.listen(3000, function(){
    console.log("Server has started");
})
Run Code Online (Sandbox Code Playgroud)

jkn*_*tek 7

您的 Express 配置指定将从以下目录访问所有静态文件public

app.use(express.static(__dirname + "/public"));
Run Code Online (Sandbox Code Playgroud)

这意味着您想要在 Web 浏览器中访问的任何文件都必须位于此目录(或其子目录)中。

例如,如果您想访问main.js,并且它的位置位于public/main.js,您可以在前端访问它,如下所示:

<script type="text/javascript" src="/main.js"></script>
Run Code Online (Sandbox Code Playgroud)

请注意,在前端,您不能包含public/前缀。