2017-10-29 2 views
1

私はReSTful APIとしてこれを使用しているので、ビューを気にしないでください。私はスタックに新しく、ちょうど基本的なものをセットアップしようとしています。REST APIはExpressでのみ 'エラー:デフォルトエンジンが指定されておらず、拡張機能が提供されていません'

GETについては、正常に動作し、データを取り戻します。私が見た事例ごとに投稿ルートを追加すると、「エラー:デフォルトエンジンが指定されておらず、拡張機能が提供されていません」というエラーが表示されます。私は自分のconsole.logから、ルートが決して襲われないことを知ることができます。

なぜGETが機能しているのかわかりませんが、POSTはビューを返すように見え、投稿ルートには届きません。

router.route('/') 
.get(function (req, res, next) { 

    User.find(query, (err, users) => { 
     if (err) { 
      console.log(err); 
     } else { 
      res.json([{ 
       id: 1, 
       username: "samsepi0l" 
      }, 
      { 
       id: 2, 
       username: "D0loresH4ze" 
      }, 
      { 
       id: 3, 
       username: "freddy" 
      }, 
      { 
       id: 4, 
       username: "mac" 
      } 
      ]); 
      // res.json(users); 
     } 
    }); 
}).post(function (req, res) { 
    console.log('test'); 
    var user = new User(req.body); 
    user.save(); 
    res.status(201).send(user); 
}); 

app.js

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 users = require('./routes/users'); 

var app = express(); 
app.set('port', process.env.PORT || 3001); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/api/users', users); 

// 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; 

任意のヘルプは高く評価されます。

答えて

3

ビューをレンダリングしようとするres.render関数が呼び出されます。このコードを削除したため、これは機能しません。この行をres.send()に置き換えると、内容のないステータスコードが送信されます。

+0

ありがとう、例外がスローされました。レンダリングをsendに置き換えた後は、エラーを返信して問題を参照して対応することができました。 –

関連する問題