如何解决Express 服务器不响应路由请求
我的快递服务器没有响应任何路由请求,无论如何我都不走运。
以下是我尝试访问的路线:
- http://localhost:3000/api/files
- http://localhost:3000/files/<:uuid>
- http://localhost:3000/api/files/send
终端输出:
通过失眠做出反应:
以下是项目文件
server.js
const express = require('express');
const app = express();
const path = require('path');
app.use(express.static('public'));
app.use(express.json);
const PORT = process.env.PORT||3000;
const connectDB = require('./config/db');
connectDB();
app.set('views',path.join(__dirname,'/views'));
app.set('view engine','ejs');
app.use('/api/files',require('./routes/files'));
app.use('/files',require('./routes/show'));
app.use('/files/download',require('./routes/download'));
console.log("Server");
app.listen(PORT,() =>{
console.log(`Listening on port ${PORT}`);
});
routes/files.js
const router = require('express').Router();
const multer = require('multer');
const path = require('path');
const File = require('../models/file');
const {v4 : uuid4} = require('uuid');
const sendMail = require('../services/email');
require('dotenv').config();
let storage = multer.diskStorage({
destination: (req,file,cb) => cb(null,'uploads/'),filename: (req,cb) => {
const uniqueName = `${Date.now()}-${Math.round(Math.random() * 1E9)}${path.extname(file.originalname)}`;
cb(null,uniqueName)
},});
let upload = multer({
storage:storage,limit: { fileSize: 100000*200},}).single('myfile');
router.post('/',(req,res) => {
console.log("Reached here");
console.log(req);
// store locally
upload(req,res,async (err) => {
// check for valid req
if(!req.file){
return res.json({
error: "Error processing file!"
});
}
if(err){ return res.status(500).send({error: err.message})}
// store in db
const file = File({
filename: req.file.filename,uuid: uuid4(),path: req.file.path,size: req.file.size,});
const response = await file.save();
return res.json({file: `${process.env['APP_BASE_URL']}/files/${response.uuid}`})
});
//return link
});
router.post('/send',async (req,res) => {
console.log(req.body);
const {uuid,emailTo,emailFrom} = req.body;
if(!uuid || !emailTo || !emailFrom){ return res.status(422).send({error: 'All files are required.'});}
const file = await File.findOne({uuid: uuid});
if(file.sender){
return res.status(422).send({error: 'Email already sent.'});
}
file.sender = emailFrom;
file.receiver = emailTo;
const response = await file.save();
sendMail({
from: emailFrom,to: emailTo,subject: "shareMe File Sharing",text: `${emailFrom} shared a file with you`,html: require('../service/template')({
emailFrom: emailFrom,downloadLink: `${process.env['APP_BASE_URL']}/files/${file.uuid}`,size: parseInt(file.size/1000)+'KB',expires: '24 hours'
})
});
return res.send({success: true});
});
module.exports=router;
routes/show.js
const router = require('express').Router();
const File = require('../models/file');
router.get('/:uuid',res) => {
try{
const file = await File.findOne({
uuid: req.params.uuid
});
if(!file){
return res.render('download',{error: 'File not fetched.'});
}
console.log(`${process.env['APP_BASE_URL']}/files/download/${file.uuid}`);
return res.render('download',{
uuid: file.uuid,fileName: file.filename,size: file.size,downloadLink: `${process.env['APP_BASE_URL']}/files/download/${file.uuid}`,});
}catch(err){
return res.render('download',{error: 'Something seems to be upset :('});
}
});
module.exports = router;
routes/download.js
const router = require('express').Router();
const File = require('../models/file');
router.get('/:uuid',res) => {
// Extract link and get file from storage send download stream
const file = await File.findOne({ uuid: req.params.uuid });
// Link expired
if(!file) {
return res.render('download',{ error: 'Link has been expired.'});
}
const response = await file.save();
const filePath = `${__dirname}/../${file.path}`;
res.download(filePath);
});
module.exports = router;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。