Node.js + Express - 无法连接。 ERR_CONNECTION_REFUSED

时间:2015-01-11 18:54:20

标签: javascript node.js express

我遵循了这个基本的例子:

http://shapeshed.com/creating-a-basic-site-with-node-and-express/

生成了文件......他们都在那里。我一步一步地运行它。无论我使用哪种浏览器,我都会收到“无法连接”(Firefox)和“此网页不可用... ERR_CONNECTION_REFUSED”(Chrome) - 它只是无法正常工作。我检查了生成的bin / www文件,它似乎表示端口3000.但是,当我在生成站点后运行“node app.js”时,我得到了 no 输出。在查看该文件后,我注意到它指向我系统上Node的错误路径,因此我将其更改为正确的路径:

#!/usr/local/bin/ node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('rwc:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = parseInt(process.env.PORT, 10) || 3000;
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error('Port ' + port + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error('Port ' + port + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  debug('Listening on port ' + server.address().port);
}

没有骰子。没有改变。运行“node app.js”时无法输出,无法将其拉出。我知道节点在那里并且已经正确安装,因为我已经运行了一堆示例代码并且稍微使用了它。

在OS X Yosemite上,但我的防火墙已关闭。

发生了什么事?令人惊讶的是,搜索此内容时发现的信息很少 - 这让我对使用Node构建任何严重的内容犹豫不决。

2 个答案:

答案 0 :(得分:8)

您的问题是您所关注的教程非常陈旧。 Express发生器随着时间的推移极大地改变了它的结构。它现在利用npm来运行初始应用程序命令。 package.json中的脚本对象非常便于抽象命令。

只需cd进入您的示例应用并运行:

npm start

您将在终端中看到以下内容:

$ npm start

> example@0.0.0 start /Users/your-user/example
> node ./bin/www

并享受!

除了设置之外,该教程的其余部分仍然非常准确。老实说,我会咨询上面的docs。只是我的意见。

最后“我注意到它指向我系统上Node的错误路径,因此我将其更改为正确的路径”。你应该改回来,否则可能会失败。

答案 1 :(得分:0)

此外,如果想让服务器保持运行,请使用nodemon

nodemon bin/www

这将给出相同的o / p:

[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node ./bin/www bin/wwww`