求Nodejs指南的博客完整例子,太痛苦了。

求Nodejs指南的博客完整例子,太痛苦了。

我做到了博客,遇到了express的router那个问题,搜索来到这里,但是看了回复不是没有解决。还是给我一份源码自己看吧,谢过。

TypeError: Object function createApplication() { var app = connect(); utils.merge(app, proto); app.request = { proto: req }; app.response = { proto: res }; app.init(); return app; } has no method 'router’ at Function.<anonymous> (H:\node\microblog\app.js:34:19) at Function.app.configure (H:\node\microblog\node_modules\express\lib\applic ation.js:396:61) at Object.<anonymous> (H:\node\microblog\app.js:17:5) at Module._compile (module.js:449:26) at Object.Module._extensions…js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9)


15 回复

针对您提到的问题,看起来您是在使用 Express.js 的时候遇到了 router 方法不存在的问题。这通常是因为您的 Express 版本过低或者在代码中错误地引用了 Express。

首先,确保您安装的是最新版本的 Express。可以通过以下命令更新:

npm install express@latest

接下来,我将提供一个简单的 Node.js + Express 示例,展示如何设置路由。这应该可以帮助您理解如何正确使用 Express 的路由器功能。

示例代码

首先,确保您的项目中已经安装了 Express:

npm init -y
npm install express

然后创建一个基本的应用文件 app.js:

const express = require('express');
const app = express();

// 定义路由
app.get('/', (req, res) => {
    res.send('Hello World!');
});

app.get('/about', (req, res) => {
    res.send('About page content');
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

这段代码定义了两个简单的路由 //about,分别返回不同的文本内容。当您运行这个应用时(通过 node app.js),您可以在浏览器中访问 http://localhost:3000/ 或者 http://localhost:3000/about 来查看结果。

解决您的问题

如果您遇到 TypeError: Object ... has no method 'router' 错误,可能是因为您错误地引用了 Express 或者尝试在一个不支持的方法上使用 .router。上述示例展示了如何正确使用 Express 路由器功能,避免了直接操作应用对象上的 .router 方法。

希望这个简单的例子能帮助您理解和解决问题!如果还有其他疑问,请随时提问。


app.request = { proto: req }; app.response = { proto: res };

这里是不是写错了。 应该是__proto__:req.

__ proto__

这是报错信息,不是我写的。

吼吼,慢慢来吧,和我开始一样,@。@认为会JS就很简单,试着写了几个小东西后,才发现搞死自己了。

你这个怎么博客,为什么进入的时候会要求输入密码啊???我无语了。。。。

不好意思,是我自己看源码没仔细。还跑过来打搅你。不好意思啦~~。新手。。。多多照顾。

我这里刚好有一份准备分享的博客源码,希望能帮助到你 https://github.com/liminglu/node_iblog

请问你的项目代码是已经更新为express3.x版本 还是书中原有的express2.x?

楼主别别光帖代码,还要贴贴你书上要求的开发环境版本与你自己版本的区别。 这些区别往往是致命的。

根据你的描述,错误提示表明你正在使用Express.js的一个旧版本,该版本不支持app.router方法。从Express 4.x版本开始,路由中间件被分离成单独的模块,如express.Router

下面是一个简单的Express应用示例,展示了如何正确设置路由。此示例将帮助你理解如何在现代Express版本中配置路由:

示例代码

首先确保你已经安装了Express库:

npm install express

然后创建一个简单的应用文件,例如app.js:

const express = require('express');
const app = express();

// 使用express.Router来定义路由
const router = express.Router();

// 定义GET路由
router.get('/', (req, res) => {
    res.send('Hello World!');
});

// 将路由器挂载到应用
app.use(router);

// 启动服务器
const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`Server running on port ${port}`);
});

解释

  1. 引入Express:

    const express = require('express');
    

    导入Express模块,它是Node.js中构建Web应用的基础框架。

  2. 创建应用实例:

    const app = express();
    

    创建一个Express应用实例。

  3. 创建路由器实例:

    const router = express.Router();
    

    创建一个路由器实例,用于组织路由逻辑。

  4. 定义路由:

    router.get('/', (req, res) => {
        res.send('Hello World!');
    });
    

    在路由器上定义一个处理GET请求的路由。

  5. 将路由器挂载到应用:

    app.use(router);
    

    将路由器挂载到应用上,使其路由生效。

  6. 启动服务器:

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

    监听指定端口并启动服务器。

希望这个示例能够帮助你解决遇到的问题,并理解如何在现代Express应用中使用路由。如果你需要更多功能或更复杂的例子,请告诉我!

回到顶部