无法使用Node.js,Express和EJS显示图像

布莱克·刘易斯

我正在为项目构建视图,但是遇到麻烦的问题是无法在.ejs页面上渲染图像。页面加载后,我在ejs文件中设置的替代文本旁边只有一个小页面图标。我还在控制台中收到“ GET /public/images/ResConnect.png 404”错误。我已经在线尝试了一些解决方案,但是似乎没有任何效果。这是我要获取徽标的特定页面的代码:

<!-- views/index.ejs -->
    <!doctype html>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <html>
    <head>
        <title>ResConnect Home</title>
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css"> <!-- load bootstrap css -->
        <script defer src="https://use.fontawesome.com/releases/v5.0.8/js/solid.js" integrity="sha384-+Ga2s7YBbhOD6nie0DzrZpJes+b2K1xkpKxTFFcx59QmVPaSA8c7pycsNaFwUK6l" crossorigin="anonymous"></script> <!-- load fontawesome -->
        <script defer src="https://use.fontawesome.com/releases/v5.0.8/js/fontawesome.js" integrity="sha384-7ox8Q2yzO/uWircfojVuCQOZl+ZZBg2D2J5nkpLqzH1HY0C1dHlTKIbpRz/LG23c" crossorigin="anonymous"></script>
        <style>
            body        { padding-top:80px; }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="jumbotron text-center">
                <img src="./public/images/ResConnect.png" alt="ResConnect Logo"/>
                <h1><span class="fa fa-lock"></span> ResConnect Home</h1>
                <p>Please advise: Only approved personnel by The University of Mississippi Department of Student Housing may access ResConnect.</p>

                <b>Login or Register with:</b><br>

                <a href="/login" class="btn btn-default"><span class="fa fa-user"></span> Login</a>
                <a href="/signup" class="btn btn-default"><span class="fa fa-user-plus"></span> Register</a>
            </div>
        </div>
    </body>
    </html>

这是我的server.js文件:

// server.js

// get all the tools we need
var express  = require('express');
var session  = require('express-session');
var favicon = require('express-favicon');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var app      = express();
var port     = process.env.PORT || 1848;

var passport = require('passport');
var flash    = require('connect-flash');


require('./config/passport')(passport); // pass passport for configuration

app.use(favicon(__dirname + './public/images/favicon.ico'));
app.use(express.static('./public/images'));

// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());

app.set('view engine', 'ejs'); // set up ejs for templating

// required for passport
app.use(session({
    secret: 'vidyapathaisalwaysrunning',
    resave: true,
    saveUninitialized: true
 } )); // session secret

app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session


require('./app/routes.js')(app, passport); 

app.listen(port);
console.log('Server running on port ' + port);

这是我正在渲染的index.ejs页面的get函数:

app.get('/', function(req, res) {
    res.render('index.ejs'); // load the index.ejs file
});

此外,这是我为该项目设置的目录,以便您可以查看所有文件的位置:

项目文件目录

催化剂

更改

app.use(express.static('./public/images'));

成为

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

您需要express来从./public/images中的文件系统提供文件,但是您需要从uri在/ public / images下的文件(而不只是'/')提供文件。

例如,在http://expressjs.com/en/starter/static-files.html中,请注意静态中间件如何通过“ public”提供服务,但示例中的uri不包括“ public”。

将路径作为参数添加到任何路径都会.use将中间件安装在给定路径下。

---编辑以支持不在/ public / images下提供的favicon.ico

您也可以更新正在使用的目录结构。

app.use(express.static('/path/to/content')); 

哪里/path/to/content包含

 /
 |-> favicon.ico
 |-> public/
     |-> images/
         |-> x.png
         |-> y.png

因此请记住,express.static在通过它的路径上(在默认情况下为“ /”)为您提供传递路径中的任何内容。它读取的路径与uri无关,但是里面的目录结构确实

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用 Node.js、Express 和 EJS 在 Bootstrap 5 导航栏中显示图像

使用Express和EJS动态显示图像

图像不显示。我正在使用 express、EJS 和 bootstrap

如何使用node.js和express上传,显示和保存图像

带Node.JS和Express和.ejs的SPA

无法在node.js中显示带有EJS文件的图像

构建Node.js,Express和EJS应用

无法使用Node.js和Express捕获POST参数

Node和Express中的Rest API,与ejs和React.js一起使用

Express.js无法使用express.static显示目录“图像”中的图像

使用 webpack 和 node.js 时不显示图像

如何从给定ID获取用户信息并使用Node.js和EJS显示它

如何使用node,express和ejs包含CSS文件?

在node.js + express + ejs上包括CSS和js文件

无法使用 Express 和 EJS 从 POST 请求重定向

在Stylus和Node.js和Express中使用本地图像是否可行?

当用户使用 node js 和 ejs 登录时隐藏登录和注册按钮并显示注销按钮

无法使用Express JS在Node JS中下载CSV文件

在我的node.js应用中使用express和ejs渲染文件夹内容,例如mod_autoindex

用于下载使用Express.js和node.js实现的文档的按钮无法正常工作

如何使用Express Node.js上传图像文件并显示

Node.js ,Express ejs 视图错误

Node.js和Express:如何将脚本文件添加到ejs文件

使用jQuery在ejs中显示图像

Node.js使用ejs显示mysql查询

无法使用 node js (express) 获取 Serving Static Files

Node.js抛出无法使用Express获得/

无法使用Express和Node Js打开从服务器下载的pdf文件

无法使用 mongoose、node.js、express 和 async 函数更新文档数据