node.js中的简单路由

node.js中的简单路由,node.js,express,Node.js,Express,我不知道我的路线有什么问题。如果我用app.js文件定义url模式回调,为什么找不到资源 app.get('/myroute', function(req, res) { res.send('Hello /myroute from app.js') }); 如果我取消注释下一行: var routes = require('./routes/index'); var users = require('./routes/users'); app.use('/', route

我不知道我的路线有什么问题。如果我用app.js文件定义url模式回调,为什么找不到资源

app.get('/myroute', function(req, res) {
    res.send('Hello  /myroute    from app.js')
});

如果我取消注释下一行:

var routes = require('./routes/index');
var users = require('./routes/users');

app.use('/', routes);
app.use('/users', users);
并将我的url模式回调放在./routes/index上,这样就行了

router.get('/myroute', function(req, res) {
  res.send('Hello / from /route/index.js');
});

代码中是否包含url模块?因为我看不见

require('url');
在您提供的代码中

我刚刚创建了一个新的node.js项目,并包含了url模块。它似乎工作良好,我没有看到你提到的问题

如果这不能解决问题,也许您可以提供更具体的错误代码?

我明白了。它与。因此,如果我在没有参数的情况下调用
next()
res.send('Hello/myroute from app.js'),
将被处理

app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(); // early was next(err)
});

app.get('/myroute', function(req, res) {
    res.send('Hello  /myroute    from app.js')
});

或者,如果将路由错误处理程序置于所有路由之下,效果会更好

在这篇非常有趣的帖子中,你可以找到下一篇:

中间件是由 Express.js路由层在最终请求处理程序之前,以及 因此,位于原始请求和最终意图之间的中间。 路线。我们经常将这些函数称为中间件堆栈,因为 它们总是按照添加的顺序被调用

因此,如果您想处理404错误,则必须:

app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

在所有的路由处理程序之后。

是的,我使用了它。只是我没有像我想的那样包括可能不相关的代码。我可能已经找到了答案。
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});