Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获错误节点Js_Javascript_Node.js - Fatal编程技术网

Javascript 未捕获错误节点Js

Javascript 未捕获错误节点Js,javascript,node.js,Javascript,Node.js,所以我正在为我的简单应用程序创建一个测试套件 我遇到了一些错误: Server is running on port 3000 POST /todos 1) Uncaught error outside test suite (node:5030) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: failed to connect to serve

所以我正在为我的简单应用程序创建一个测试套件

我遇到了一些错误:

Server is running on port 3000
  POST /todos
    1) Uncaught error outside test suite
(node:5030) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
    2) "before each" hook for "should create a new todo"


  0 passing (2s)
  2 failing

  1)  Uncaught error outside test suite:
     Uncaught MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
      at Pool.<anonymous> (node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:328:35)
      at Connection.<anonymous> (node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:274:12)
      at Socket.<anonymous> (node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:177:49)
      at emitErrorNT (net.js:1278:8)
      at _combinedTickCallback (internal/process/next_tick.js:74:11)
      at process._tickCallback (internal/process/next_tick.js:98:9)

  2)  "before each" hook for "should create a new todo":
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.


npm ERR! Test failed.  See above for more details.
这是我的server.js

var express = require('express');
var bodyParser = require('body-parser');
var {ObjectID} = require('mongodb');

var {mongoose} = require('./db/mongoose.js');
var {Todo} = require('./models/todo');
var {User} = require('./models/user');

var app = express();
const port = process.env.PORT || 3000;

app.use(bodyParser.json());

app.post('/todos', (req, res) =>{
  // console.log(req.body);
  var todo = new Todo({
    text: req.body.text
  });

  todo.save().then((doc) => {
    res.send(doc);
  }, (err) => {
    res.status(400).send(err);
  });
});

// GET /todos/12345
app.get('/todos/:id', (req, res) => {
  // req.send(req.params); - test localhost:3000/todos/123 on postman GET
  var id = req.params.id;

  // Validate id using isValid
 if(!ObjectID.isValid(id)){
     // Respond 404 and send back and an empty bodyParser
   return res.status(404).send();
 }


  // findById
Todo.findById(id).then((todo) =>{
if(!todo){
  return res.status(404).send();
}
res.send({todo});

}).catch((e) =>{
  res.status(400).send();
});


});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

module.exports = {app};
知道是什么导致了我的错误吗

大多数时候,它是在问它不能把所有的事情都做完

请帮忙

知道是什么导致了我的错误吗

在某个地方,您有一个最终拒绝的承诺,您从未为其连接拒绝处理程序(例如,
catch
then
的第二个参数)。具体位置是调试的问题,但例如以下代码:

beforeEach((done) => {
  Todo.remove({}).then(() => {
    return Todo.insertMany(todos);
  }).then(() => done());
});
…有一个承诺,你永远不会联系拒绝处理者。因此,如果该承诺被拒绝,您将得到未处理的拒绝错误

实际的问题可能不是那个特定的问题(尽管它确实需要一个拒绝处理程序),但如果不是,它将是另一个以相同方式使用的问题

规则是:代码必须要么处理承诺拒绝,要么传递承诺,以便在调用方级别处理它们。如果代码没有传递承诺(例如上面的每个之前的
),它必须处理拒绝。

尝试添加以下内容:

if(!module.parent){
 app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
 });
}

你应该解释你在做什么,而不是给他/她密码说试试这个。如果有人说你应该跳桥,那你就不会跳桥,因为这就是解决办法
if(!module.parent){
 app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
 });
}