@antonsr98
Системный Администратор

Построение Router выводит ошибку [TypeError: Cannot read property 'Kerberos' of undefined]. Как решить?

Доброе время суток. я создал приложение при помощи express test -e, затес создал файлик в каталоге routes api.js с содержимым
var express = require('express');
var router = express.Router();

// start route

router.route('/devices')
 
 
  .post(function(req, res) {
    
    var device = new Device();
    device.uuid = req.body.uuid;
    device.location.coordinates = req.body.location.coordinates;
    device.type = req.body.type;
    device.save(function(err) {
      if (err)
        res.send(err);
 
      res.json({ message: 'Device created!' });
    });
 
    
  })
 
  .get(function(req, res) {
    Device.find(function(err, devices) {
      if (err)
        res.send(err);
 
      res.json(devices);
    });
  });
 
router.route('/devices/:device_id')
 
  .get(function(req, res) {
    Device.findById(req.params.device_id, function(err, device) {
      if (err)
        res.send(err);
      res.json(device);
    });
  })
 
  .put(function(req, res) {
    Device.findById(req.params.device_id, function(err, device) {
 
      if (err)
        res.send(err);
 
      device.uuid = req.body.uuid;
      device.save(function(err) {
        if (err)
          res.send(err);
 
        res.json({ message: 'Device updated!' });
      });
 
    });
  })
 
  .delete(function(req, res) {
    Device.remove({
      _id: req.params.device_id
    }, function(err, device) {
      if (err)
        res.send(err);
 
      res.json({ message: 'Successfully deleted' });
    });
  });

// end

module.exports = router;


в файл app.js прописал
var api = require('./routes/api');

var mongoose   = require('mongoose');
mongoose.connect('mongodb://admin@192.168.0.104:27017/monitor');
var Device     = require('./models/device');

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


в ответ получаю : [TypeError: Cannot read property 'Kerberos' of undefined]
Прошу помощи в какую сторону капнуть. Заранее спасибо
  • Вопрос задан
  • 1360 просмотров
Решения вопроса 1
nzhulikov
@nzhulikov
Do something, done nothing
У меня такая же ошибка, однако у меня она не влечёт никаких последствий и код отрабатывает. Node-inspector показал, что она возникает где-то в ядре mongodb драйвера, который используется в mongoose. Соответственно, когда мы подключаем mongoose, тогда она и выскакивает.
В ридми драйвера вот что есть:

## Troubleshooting

The MongoDB driver depends on several other packages. These are.

* mongodb-core
* bson
* kerberos
* node-gyp

The `kerberos` package is a C++ extension that requires a build environment to be installed on your system. You must be able to build node.js itself to be able to compile and install the `kerberos` module. Furthermore the `kerberos` module requires the MIT Kerberos package to correctly compile on UNIX operating systems. Consult your UNIX operation system package manager what libraries to install.

{{% note class="important" %}}
Windows already contains the SSPI API used for Kerberos authentication. However you will need to install a full compiler tool chain using visual studio C++ to correctly install the kerberos extension.
{{% /note %}}


Так же в свежем апдейте драйвера в списке обновлений есть запись:

1.3.1 2016-02-05
----------------
- Removed annoying missing Kerberos error (NODE-654).


Вот ссылка на ошибку: /NODE-654

Так что, я думаю, стоит просто обновить драйвер и ошибка исчезнет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@antonsr98 Автор вопроса
Системный Администратор
интересно почему такая разница между созданием основы через генератор express и когда ручками все пишешь :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы