解决节点中的“localhost意外关闭连接”错误

时间:2016-04-23 23:43:34

标签: javascript node.js

我正在通过Chris Sevilleja的“Mean Machine:一个初学者的JavaScript堆栈实用指南”。我的问题在第60页。根据本书的说明,我创建了一个小的server.js文件以及package.json,并使用npm install创建node_modules文件夹并使用适当的模块填充它。当我运行'server.js'时,我在终端中收到一条消息,运行我放在程序末尾的console.log()消息。所以我知道程序运行了。但是,当我转到Chrome并在搜索栏中输入“https://localhost:8080”时,收到以下错误消息:

  

无法访问此网站

     

localhost意外关闭了连接。

     

ERR_CONNECTION_CLOSED

我花了一个多小时试图解决这个问题并且很遗憾。如果我使用'http'而不是'https',它只需要永远加载(我等了5分钟)。我已经检查过我是否在Chrome中有异步DNS标记,并确认它已启用。我试着在终端上做“$ lsof -i:8080”并得到:

  

命令PID用户FD类型设备大小/关闭节点>名称   节点6188 23u IPv6 0x3a96cd0448d7ba87 0t0 TCP> *:http-alt(LISTEN)

(不确定它的作用但是我在网页上看到它解决了类似的问题并且响应者指示该人这样做。)我也尝试在Safari上访问它并收到相同的消息。

我的代码如下:

var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var mongoose = require('mongoose');

var port = process.env.PORT || 8080; // set the port for our app

var app = express(); // define our app in terms of Express
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json);

// configure out app to handle CORS requests
app.use(function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization');
    next();
});

// log all requests to the console
app.use(morgan('dev'));

// API routes

// basic route for the home page
// route, not middleware, so no 'next' parameter
app.get('/', function(req, res) {
    res.send('Welcome to the home page!');
});

// get an instance of the express router
var apiRouter = express.Router();

// test route to make sure everything is working
// accessed at GET http://localhost:8080/api
apiRouter.get('/', function(req, res) {
    res.json({message: 'Welcome to our API.'});
});

// mount apiRouter on our app
// they will all be prefixed with /api
app.use('/api', apiRouter);

// start the server on the port we indicated on line 6
app.listen(port);
console.log('Magic happens on port ' + port);

有关获取我的'res.send的任何建议('欢迎来到主页!');'要显示的消息太棒了。提前致谢。我试图尽可能地描述问题,但如果您需要任何其他信息,请告诉我。

跟进的排序:我正在使用SublimeText。我可以使用更复杂的IDE识别/解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

更改您的端口,然后再试一次

var port = process.env.PORT || 8888;

http://localhost:8888

答案 1 :(得分:0)

在镶边中添加“ https://localhost:8080”而不是“ http://localhost:8080”。使用“ http”代替“ https”