2017-01-25 20 views
2

私はnode.jsの初心者ですが、ノード+エクスプレスjで構造をセットアップするのを少し難しくしています。フロントエンドと別のAPI構造で作業を始めます。 APIとフロントエンドの両方に対して単一のapp.jsを配置します。しかし、私のAPIは機能しません。私はhttp://localhost:3000/api/usersと呼ぶとエラーになります.GET/api/usersはできません。ノード+エクスプレスJS APIが機能していない

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(コントローラ)あなたは2を輸出しているあなたのroutes.jsファイルで

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

しようとすると、役に立つかもしれない、nodejsに急行を設定する方法の例です:https://expressjs.com/en/starter/hello-world.html – Giovanni

答えて

1

を助けてくださいもの。ここではルータだけをエクスポート

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

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

module.exports = router; 
+0

はいています理由があるかもしれない – Deep

+0

おかげで仲間。あなたによると、私は2つのものをインポートしています。あなたが間違ってインポートしているものをもっと簡単に教えてください。 – truesource

+0

インポート、エクスポートしません。あなたは 'module.exports = router;と' module.exports = function(app){...} 'の両方をエクスポートしています。私の答えに詳しく述べるようにしてください:ルータをエクスポートし、 'router.get'で' app.get'を置き換えてください。 – ThomasThiebaud

関連する問題