Express Node.js 不起作用

Posted

技术标签:

【中文标题】Express Node.js 不起作用【英文标题】:Express Node.js doesn't work 【发布时间】:2014-07-01 12:39:00 【问题描述】:

我在我的 ubuntu 12.04 上安装了 express 4 以及 node.js、npm 和 express-generator,并使用以下命令创建了一个应用程序:

express test --hogan -c less
cd test && npm install
node app.js

现在我应该得到的是“在端口 3000 上运行的 Express 服务器”,但命令只是执行并且不会留下任何消息或错误。所以我不知道哪个端口快车正在运行,或者它是否正在运行。那么有人知道它出了什么问题吗?提前致谢。

【问题讨论】:

【参考方案1】:

新的 express-generator 不会在自动生成的 app.js 文件中添加 app.listen 语句。这可能是一个错误?你可以做的是添加一个类似的语句

app.listen(3000, function () 
  console.log("express has started on port 3000");
);

这将指示 express 监听 3000 端口并在控制台上打印出有用的消息。

【讨论】:

我在控制台中获得了正确的日志,但是当我尝试访问 localhost:3000 时我的浏览器挂起 - 有什么想法吗? 要么是因为您没有路由处理程序,要么是因为您没有返回任何响应。 app.get('/any_url', (req, res) => res.send('结束无限事件循环连接'))【参考方案2】:

对于新手:检查您的应用程序中指定的端口号是否与您在浏览器搜索栏中输入的帖子号相同。

【讨论】:

【参考方案3】:

我在本地遇到了这个问题。 我找到了这条线:

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

var port = 
process.env.PORT ?
process.env.PORT : 3000;

不适合我。

只给我“ERR_CONNECTION_REFUSED”。 但是 nodemon 没有报告错误。

解决方案: 对逻辑更健壮一点:

var DEFAULT_PORT = 3000;
var port         = DEFAULT_PORT;
var maybe_port = process.env.PORT;
if( typeof maybe_port === "number" )
    port = maybe_port;

那么,别忘了:

app.listen( port );  

【讨论】:

【参考方案4】:

自动生成的快速应用程序不应通过运行node app.js 来启动。

如果您查看 package.json 文件,您应该会看到类似

的内容
"scripts": 
    "start": "node ./bin/www"

这就是设计自动生成应用程序的启动方式。您可以通过完全运行它在此处所说的内容来启动它(即,从项目的根目录中运行node ./bin/www"),或者更正确的方法是使用根目录中的npm start 来启动它。

【讨论】:

以上是关于Express Node.js 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Node js csrf令牌保护不起作用

在node.js中删除文件不起作用

Node.js WebStorm 远程调试不起作用(没有 SSH 隧道)

Angular js 表达式在 Node js 项目中不起作用

从cloudinary删除带有完整url的图像不起作用-Node.js

***等待在最新的 Node.js 中不起作用