2017-01-25 5 views
2

Ich bin ein Anfänger in node.js, aber ich versuche ein wenig schwieriger, eine Struktur in Node + Express js.I beginnen mit dem Front-End und separate API Struktur.I Legen Sie eine einzige app.js für API und Front-End.Aber meine API funktioniert nicht. Es gibt Fehler Kann nicht GET/API/Benutzer, wenn ich http://localhost:3000/api/users aufrufen. bitte helfenNode + Express JS API funktioniert nicht

api 
-controllers 
-helpers 
-middlewares 
-models 
-routes.js 
app.js 
controllers 
helpers 
middlewares 
models 
node_modules 
package.json 
public 
views 

app.js

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

var path = require('path'); 
app.set('views', path.join(__dirname, 'views/')); 
app.set('view engine', 'ejs') 
app.use(express.static(__dirname + '/public')) 
app.use(bodyParser.json()) 
app.use(bodyParser.urlencoded({extended: true})) 
app.use(require('./controllers')) 
var routes = require('./api/routes'); 
app.use('/api', routes); 
app.listen(port, function() { 
    console.log('Listening on port ' + port) 
}) 

routes.js

var express = require('express') 
, router = express.Router() 
var usersController = require('./controllers/users'); 
module.exports = function (app) { 
    app.get('/users', usersController.getUser); 
}; 
module.exports = router; 

users.js (Controller)

module.exports = { 
    getUser: function (req, res) { 
     console.log("sdfdsfdsfsd"); 
     res.setHeader('Content-Type', 'application/json'); 
     res.send(JSON.stringify({"msg": "welcome user"})); 
    } 
} 
+0

Hier ist ein Beispiel dafür, wie ausdrücklich zur Einrichtung in NodeJS, können Sie feststellen, nützlich: https://expressjs.com/en/starter/hello-world.html – Giovanni

Antwort

1

In Ihrem routes.js Datei, die Sie zwei exportieren Dinge. Versuchen Sie, nur den Router zu exportieren

var express = require('express') 
, router = express.Router() 
var usersController = require('./controllers/users'); 

router.get('/users', usersController.getUser); 

module.exports = router; 
+0

ja, dass kann ein Grund sein – Deep

+0

danke Kumpel. dir zufolge importiere ich zwei dinge, kannst du mir kurz sagen, welche dinge ich falsch importiere. – truesource

+0

Nicht importieren, exportieren. Sie exportieren sowohl 'module.exports = router;' und 'module.exports = function (app) {...}'. Versuchen Sie, wie in meiner Antwort ausführlich beschrieben: Exportieren Sie den Router und ersetzen Sie 'app.get' durch' router.get' – ThomasThiebaud