Nodejs express.router为空

Nodejs express.router为空

console.log(typeof express.router)结果为undefined app.use(express.router(routes))如何使用啊

7 回复

当您遇到“Nodejs express.router为空”的问题时,通常是因为您使用的是较新版本的Express框架。在Express 4.x及更高版本中,express.router 已经被移除,取而代之的是 express.Router() 方法。这可能是导致您的代码无法正常工作的原因。

示例代码

1. 创建路由模块

首先,创建一个单独的文件来定义您的路由。例如,创建一个名为 routes.js 的文件:

// routes.js
const express = require('express');

const router = express.Router();

router.get('/', (req, res) => {
    res.send('Hello from the root route!');
});

router.get('/about', (req, res) => {
    res.send('Hello from the about route!');
});

module.exports = router;

2. 在主应用文件中使用路由

接下来,在您的主应用文件(如 app.jsserver.js)中引入并使用这个路由模块:

// app.js
const express = require('express');
const routes = require('./routes'); // 引入路由模块

const app = express();

// 使用路由
app.use('/', routes);

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

解释

  • express.Router(): 这是一个创建路由实例的方法。它允许您将一组路由逻辑封装在一个单独的模块中。
  • app.use(): 用于将路由中间件添加到应用中。在这个例子中,我们使用 app.use('/', routes); 来将我们的路由模块挂载到根路径 /

通过这种方式,您可以更清晰地组织和管理您的路由逻辑,避免将所有代码都写在一个大文件里,从而提高代码的可维护性。


你好,express.router(routes),提示没有这个方法,不知道是什么原因?express.router和app.router有什么不同?

3.0已经删了这个方法了,这个方法原来在nodejs开发指南上用的,现在deprecated,用app.router或者自己的routes文件,routes(app);

当使用routes后,路由了http://examples.com/artice/:page 这里可以通过req.params.page来获取这个page 那如果这时,我还希望有这样的url,http://examples.com/article/2?keyword=mykey 这时我还有办法来获取keyword的值吗。 其实还有什么办法。

我的解决方案是这样: app.js 中 var routes =require(’./routes’); app.confirgure() 中添加app.use(routes(app)); routes/index.js 代码如下: 其实就是将app对象当参数传给自己的路由函数,最后return 回来给app.use

 /*
     * GET home page.
     */
    var user = require('./user')
      , md = require('./markdown');
    module.exports = function (app) {
    	app.get('/', function(req, res){
    	  res.render('index', { title: 'Express' });
    	});
	app.get('/users', user.list);
	app.get('/markdown', md.demo);
	return app.router;
}</code></pre>

req.body.keyword

当您在使用 express.router 时遇到问题,可能是因为您所使用的 Express 版本较新。express.router 在较旧版本的 Express 中可用,但在现代版本中已经被移除。现在应该使用 express.Router() 来创建路由。

以下是如何正确使用路由的示例:

示例代码

  1. 安装 Express(如果尚未安装):

    npm install express
    
  2. 创建一个简单的 Express 应用

    const express = require('express');
    const app = express();
    
    // 创建一个新的路由器实例
    const router = express.Router();
    
    // 定义路由
    router.get('/', (req, res) => {
      res.send('Hello World!');
    });
    
    // 将路由器应用到主应用
    app.use(router);
    
    // 启动服务器
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    

解释

  • express.Router():这是用于创建新的路由器实例的方法。您可以定义多个路由,并将它们挂载到主应用上。

  • app.use(router):这行代码将路由器应用到主应用中,使路由器中的所有路由都可用。

  • router.get('/', ...):这是一个 GET 请求的路由处理程序。当用户访问根路径 / 时,将返回 “Hello World!”。

如果您之前尝试使用 express.router 并发现它为 undefined,那么您可能是在较新版本的 Express 中使用了旧的 API。改为使用上述方法即可解决问题。

回到顶部