Nodejs中重定向的未处理承诺拒绝

时间:2017-05-07 01:05:46

标签: javascript node.js redirect es6-promise

在nodejs中重定向时,我偶然发现了一个与promises有关的奇怪问题。在下面的代码中,我使用一个函数来处理对象的写入,如果它拒绝它将检查该项是否存在,如果它没有解析。当它解析时,我将用户重定向到另一个页面,该页面包含其url中示例中使用的id。

var Test = function() {

  var obj = {};

  function addItemToObj(id) {
    return new Promise(function(resolve, reject) {

      var idAlreadyExists = obj[id] ? true : false;

      if (idAlreadyExists) {
        return reject('id already exists');
      }

      obj[id] = 'test';
      return resolve(id);
    });
  }

  return {
    createTestPage: function(request, response) {

      var id = 'testid';

      return addItemToObj(id).then(function(id) {
        return response.redirect(`/newPage/${id}`);
      }).catch(function(error) {
        console.error(error);
      });
    }
  }
}

module.exports = new Test;

因此,当我运行此代码时,我收到此错误:

(node:46878)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):TypeError:无法在字符串'Model already exists'上创建属性'_locals' < / p>

错误在于我说我没有处理拒绝,但我处在捕获状态。当我删除重定向时,错误消失了,但我找不到原因。

任何人都可以解释这个问题吗?

0 个答案:

没有答案