0

我一直在努力模块化我的 node.js express 应用程序,我希望每个部分都在它自己的目录中,但似乎无法正确路由。

每个都在例如 app/lib/main main 是加载正常的索引而不是 /login 或 /notes

控制台向我抛出这个但没有视图目录

错误:无法在视图目录“/home/dave/node/app/views”中查找视图“login.ejs”

在 Function.app.render

获取/登录 500 54ms - 1.01kb

目前 app.js 看起来像这样:

var express = require('express');
var app = express();
var login = require('./lib/login');
var main = require('./lib/main');
var notes = require('./lib/notes');

app.use(express.static(__dirname + '/assets/css', { maxAge: oneDay }));// load the       folder

app.use(main);
app.use(login);
app.use(notes);

app.listen(config.server.port);
console.log('server listening on port 3000')

这是默认行为吗?我似乎可以在 node.js 或 express 网站上找到任何信息

4

1 回答 1

3

我认为您需要划分路线。( http://expressjs.com/4x/api.html#router )

app.use('/', main);
app.use('/login', login);
app.use('/notes', notes);

尽管我在根“路由”目录中划分了所有内容,但我也有类似的风格将我的网站的某些部分划分为路线后面。如果有帮助,你可以看看我是如何做的:https ://github.com/codetunnel/pawproject/blob/master/app.js#L63-L65

在 express 4 中,模式是为每个区域创建一个新的路由器。通常他们module.exports = router在文件的底部分配,这就是你传递给app.use. 由于您遗漏了路由器应在其下运行的 URL 模式,我猜这就是为什么第一个可以工作而其余的无法覆盖已经在根目录中指定的路由器的原因。

我是 Express 4 的新手,并且仍然习惯于这些变化,所以我可能不是 100% 正确,但我相信这是你遇到的问题,因为我遇到了类似的问题。不过我会继续闲逛:)

于 2014-07-05T01:01:27.593 回答