2017-09-15 2 views
0

Ich bin ich stecken in Post-Anfrage, während ich Bilder entwickeln in Quill-Editor. Ich habe keine Ahnung, was ich tun muss, um dieses Problem zu beheben. Wenn ich versuche, Daten mit Post-Anfrage zu senden, dann 404 Fehler auftreten.Wie behebt man POST 404 Fehler mit node.js?

enter image description here

Routen/img.js - AKTUALISIERT

var ImageFile = require('../models/imageFiles'); 

var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'img/') // Set directory 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.name) // Set file name 
    } 
}); 

var img = multer({ storage: storage }); 

router.post('/upload', img.single('imgfile'), (req, res, next) => { 
    var imageFile = new ImageFile({ 
     name: req.body.name, 
     type: req.body.type, 
     size: req.body.size, 
     content: req.body.content 
    }); 

    imageFile.save((err, result) => { 
     if (err) { 
      return res.status(500).json({ 
       title: 'An error occured', 
       error: err 
      }); 
     } 
     res.status(201).json({ 
      message: 'User created', 
      obj: result 
     }); 
    }); 
}); 

module.exports = router; 

app.js

const express = require('express'); 
var bodyParser = require('body-parser'); 
const port = process.env.PORT || 3000; 

var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 

var appRoutes = require('./routes/app'); 
var userRoutes = require('./routes/user'); 
var imgRoutes = require('./routes/img'); 
var app = express(); 

// Start 
app.use(express.static(path.join(__dirname, '../awesome-drill/dist'))); 

app.use(logger('dev')); 
app.use(bodyParser.json({ limit: '10mb' })); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use((req, res, next) => { 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-Width, Content-Type, Accept'); 
    res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS'); 
    next(); 
}); 

app.use('/user', userRoutes); 
app.use('/img', imgRoutes); 
app.use('/', appRoutes); 
app.use(express.static('routes')); 

// It's for routing SPA 
app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, '../awesome-drill/dist/index.html')); 
}); 

app.listen(port,() => { 
    console.log(`Server is up on port ${port}`); 
}); 

Vorderseite Service (angular4)

Dank Ihnen habe ich meinen Fehler gefunden und ich habe ihn hinzugefügt. Ein 404-Fehler tritt jedoch immer noch auf.

Es ist meine Ordnerstruktur. enter image description here

+1

Bitte aktualisieren Sie Ihre Antwort, um den Frontend-Code einzuschließen, der tatsächlich auf Ihrer Route veröffentlicht wird. Ein 404 bedeutet nicht gefunden, also können Sie auch den Mungo-Modellcode entfernen, da es nichts mit dem Problem zu tun hat. – Soviut

+0

Das bedeutet, dass Sie Daten an den falschen URI senden oder dass der URI, den Sie auf dem Backend definiert haben, nicht existiert. 404 bedeutet "nicht gefunden", und da Ihr Code diesen Fehler nicht explizit für ein "nicht gefundenes Ergebnis" ausgibt, ist der einzige andere Ort wegen der falschen URL., –

+0

Ihre app.js sollte eine normale 404 'Middleware 'haben Zumindest erinnere ich mich an das ursprüngliche express.js-Setup, mit dem es hinzugefügt wurde. Schlagen sie zumindest Ihren Controller? oder hast du eine andere 'Middleware'-Funktion, die das möglicherweise verursacht? –

Antwort

0

Sie exportieren Ihren Router nicht. Fügen Sie Folgendes am Ende Ihrer routes/img.js Datei hinzu.

module.exports = router; 

Die Art und Weise Sie es jetzt haben, gibt es keine Standard-Export, also wenn Sie require('./routes/img') Sie importieren nichts. Wenn Sie console.log(imgRoutes) in app.js wären, würde es wahrscheinlich undefined zurückgeben.

+0

Ich dachte, ich hätte dieses Problem gelöst haben, aber es macht immer noch 404 Fehler ... –

+0

Das gibt einen anderen Grund, dass Ihre Route nicht existiert. Entweder setzen Sie eine Menge 'console.log()', um zu sehen, ob Ihr Modul korrekt importiert wird, oder tappen Sie mit 'debugger;' https://nodejs.org/api/debugger.html durch jeden Teil des Codes – Soviut