我正在尝试为 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/