Html 未能加载资源:服务器在Nodejs应用程序中以404(未找到)问题的状态响应

Html 未能加载资源:服务器在Nodejs应用程序中以404(未找到)问题的状态响应,html,node.js,Html,Node.js,我需要帮助。我在这里查找了解决方案,但仍然找不到。所以我在Goorm ide中练习一些东西,我已经走到了死胡同。我试图通过将脚本放在页脚来链接main.js(在js文件夹中)文件。但我得到一个错误,它说 加载资源失败:服务器响应状态为404(未找到) 我还在lib文件夹中上传了一些png文件,在尝试访问ejs模板中的文件后,我遇到了相同的错误 根文件夹由js、lib和views文件夹以及其他一些不相关的文件夹组成 为了链接footer.ejs中的main.js(在视图中的partials文件夹中

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

加载资源失败:服务器响应状态为404(未找到)
我还在lib文件夹中上传了一些png文件,在尝试访问ejs模板中的文件后,我遇到了相同的错误

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

为了链接footer.ejs中的main.js(在视图中的partials文件夹中),我使用
。 上传到lib/images文件夹中的png图像,我试图从视图中的ejs模板访问这些图像,所以我使用了
。 我在这两种情况下都犯了这个错误。如果有人能帮忙,我们将不胜感激。这就是我的根文件夹的外观-

编辑: 这是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");
})

Express配置指定从
public
目录访问所有静态文件:

app.use(express.static(uu dirname+“/public”);
这意味着您要在web浏览器中访问的任何文件都必须在此目录(或其子目录)内

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



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

请在main Node.js file.Hi中发布代码。我已经编辑了操作。请检查。我给的照片,是我为解释我的问题而制作的模型。我想我指向文件夹的方式可能有问题。好的,根据您的express配置,您的web浏览器将只能访问
public
文件夹中的文件。因此我应该将main.js文件和所有png文件放在public文件夹中?是的。请看我的答案。嘿,你说的有用。我将main.js文件移动到public/js目录中。并在我的ejs模板中使用了
。但是你说的不要公开。在脚本标记中使用public是一种糟糕的做法吗?我的另一个问题是,我应该把png文件也放在公共文件夹中吗?我会说这可能是一种不好的做法,只是因为它表明它没有被使用。但可能不会有什么伤害。关于图像,是的,您希望在前端访问的所有文件都应位于
公用文件夹中。如果你愿意,你可以添加一个
public/images
目录,以保持整洁。如果我的答案有帮助,请不要忘记给它投赞成票,并将其标记为已接受的答案。我将不胜感激。(否则我的时间不会有任何代表。)谢谢!嘿,这很有帮助。非常感谢,伙计。从你的答案中学到了关于公共目录的新东西。再次感谢。@Zak很高兴我能帮上忙!