Node.js 和express 无法获取/

标签 node.js express

我正在尝试为 Android 应用程序构建一个 Node 后端,但遇到了一些问题。 当连接到 localhost:8080 时,我总是得到cannot GET/。

这是我的 app.js 代码:

/** Dependencies **/
var express = require('express');
var connect = require('connect');
var app     = express();
var port    = process.env.PORT || 8080;

//Configurations
app.use(express.static(__dirname + '/public'));
app.use(connect.logger('dev'));
app.use(connect.json());
app.use(connect.urlencoded());

//Routes

require('./routes/routes.js');

app.listen(port);
console.log("The App is running on port " + port);

这是route.js 文件:

var app     = module.exports ;

module.exports = function(app){
    app.get('/', function(req, res){
        res.end("Node-Android");
    });
}

每次尝试访问 localhost:8080/时,我仍然收到 Cannot GET/

我是否遗漏了什么或者我做了什么严重错误的事情? 希望我能从这里得到帮助:)

最佳答案

您的 routes.js 模块使用以下行声明需要参数(app 对象)的构造函数:

module.exports = function(app){ ... }

但是,您只需包含这样的模块:

require('./routes/routes.js');

这意味着您只是加载模块,但从未调用构造函数。因此,您需要更改此设置:

require('./routes/routes.js');

对此:

require('./routes/routes.js')(app);

这将调用构造函数并向其传递所需的 app 对象,然后它可以使用该对象来初始化其路由。

<小时/>

此外,您执行此操作的模块中有一行误导性且不必要的代码:

var app     = module.exports ;

该特定的 app 变量未在模块中的任何位置使用,并且具有误导性,因为它与构造函数的 app 参数具有相同的名称。您应该从routes.js 模块中删除该行。这是误导性的,也是不必要的。

关于Node.js 和express 无法获取/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134214/

相关文章:

javascript - Socket.io 按钮监听器无法在移动设备上工作

node.js - 如何在远程服务器上运行多个 mongodb 数据库

node.js - 在 Google Compute Engine 上自动安装 FFMPEG (Debian Wheezy 7.8)

javascript - 那些 JS 框架怎么了?

node.js - npm 错误! addPlacedTarball 无法删除

javascript - 将用户保存在 cookie 中( header 已发送)

node.js - 无法使用 GridFS 从 MongoDB 流式传输视频

javascript - 创建新子级时如何将parent_id的外键分配给post路由

javascript - 创建脚本以将种子数据插入 node.js 中的 mongodb

javascript - Socket.io 将两个客户端添加到房间