我正在研究克里斯·塞维利亚(Chris Sevilleja)的“平均值机:JavaScript堆栈的初学者实用指南”。我的问题在第60页上。按照本书的说明,我已经创建了一个小型的server.js文件以及package.json文件,并使用npm install创建了node_modules文件夹,并使用适当的模块填充了该文件夹。当我运行“ server.js”时,我在终端中收到一条消息,该消息运行我在程序末尾放置的console.log()消息。所以我知道程序已经运行。但是,当我随后进入Chrome并将“ https://localhost:8080”放在搜索栏中时,我收到以下错误消息:


  无法访问该网站
  
  本地主机意外关闭了连接。
  
  ERR_CONNECTION_CLOSED


我花了一个多小时试图弄清楚这一点,但我很失落。如果我使用“ http”而不是“ https”,那么它将永远需要加载(我等了5分钟)。我检查了Chrome中是否有异步DNS标志或其他内容,并确认已启用它。我尝试在终端上执行“ $ lsof -i:8080”,并得到:


  COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE> NAME
  节点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识别/解决此问题吗?

最佳答案

更改端口,然后再试一次

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


http://localhost:8888

关于javascript - 解决 Node 中的“localhost意外关闭连接”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36819489/

10-14 05:02