Node.js 使用邮递员可以看到图像吗?
我已经创建了一个Node.JS REST API服务器,并试图通过在上发送GET请求来测试它https://localhost:3443/public/images/logo.png 该logo.png图像存在,我可以在目录中看到它。但是邮递员给了我一条404错误信息 这是我的imagesRouter.js: 这是我的app.js文件: 编辑:这是我的应用程序文件树:Node.js 使用邮递员可以看到图像吗?,node.js,rest,express,mongoose,http-status-code-404,Node.js,Rest,Express,Mongoose,Http Status Code 404,我已经创建了一个Node.JS REST API服务器,并试图通过在上发送GET请求来测试它https://localhost:3443/public/images/logo.png 该logo.png图像存在,我可以在目录中看到它。但是邮递员给了我一条404错误信息 这是我的imagesRouter.js: 这是我的app.js文件: 编辑:这是我的应用程序文件树: 您需要指定静态路由器的底部以指向公用文件夹。您当前正在以当前代码在根路由上装载公用文件夹。你可以换这条线 app.useexpr
您需要指定静态路由器的底部以指向公用文件夹。您当前正在以当前代码在根路由上装载公用文件夹。你可以换这条线 app.useexpress.staticpath.join__dirname,“public” 致: app.use'/public',express.staticpath.join__dirname',public'
或者,您可以通过以下方式从postman或任何其他客户端调用端点:https://localhost:3443/images/logo.png您的目录结构看起来如何?文件是否位于public/images/logo.png相对于app.js的根目录?@abondoa:我把我的app files树放在编辑部分。非常感谢abondon,你能帮我解决这个问题吗?
const express = require('express');
const bodyParser = require('body-parser');
const Images = require('../models/images');
var authenticate = require('../authenticate');
const imagesRouter = express.Router();
const cors = require('./cors');
imagesRouter.use(bodyParser.json());
imagesRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); } );
imagesRouter.route('/')
//.options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })
.get(cors.cors, (req,res,next) => {
Images.find({})
.then((images) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(images);
}, (err) => next(err))
.catch((err) => next(err));
})
module.exports = imagesRouter;
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var index = require('./routes/index');
var usersRouter = require('./routes/usersRouter');
var imagesRouter = require('./routes/imagesRouter');
const uploadRouter = require('./routes/uploadRouter');
const Images = require('./models/images');
//const uploadRouter = require('./routes/uploadRouter');
//const favoriteRouter = require('./routes/favoriteRouter')
var config = require('./config');
const mongoose = require('mongoose');
//mongoose.set('useCreateIndex', true);
mongoose.Promise = require('bluebird');
var passport = require('passport');
var authenticate = require('./authenticate');
// Connection URL
const url = config.mongoUrl;
const connect = mongoose.connect(url, {
//useMongoClient: true,
/* other options */
useNewUrlParser: true ,
useUnifiedTopology: true
});
connect.then((db) => {
console.log("Connected correctly to server");
}, (err) => { console.log(err); });
var app = express();
// Secure traffic only
app.all('*', (req, res, next) => {
if (req.secure) {
return next();
}
else {
res.redirect(307, 'https://' + req.hostname + ':' + app.get('secPort') + req.url);
}
});
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(passport.initialize());
app.use('/', index);
app.use('/users', usersRouter);
app.use(express.static(path.join(__dirname, 'public')));
app.use('/public/images',imagesRouter);
app.use('/imageUpload',uploadRouter);
//app.use('/imageUpload',uploadRouter);
//app.use('/favorites',favoriteRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;