Nodejs报错:has no method 'redircet',求思路。

Nodejs报错:has no method ‘redircet’,求思路。

在测试两次密码不一致的case中就报错了,错误信息下面。

code

exports.reg = function(req, res){
  res.render('reg', {title: '用戶註冊'});
};
exports.doReg = function(req, res){
 if (req.body['password-repeat'] != req.body['password'])
 {
   req.session.error = '兩次輸入的口令不一致';
   return res.redircet('/reg');

error info

TypeError: Object #<ServerResponse> has no method 'redircet’ at exports.doReg (/home/xxx/Project/nodeJs/microblog/routes/index.js:90:15) at callbacks (/home/xxx/Project/nodeJs/microblog/node_modules/express/lib/router/index.js:165:11) at param (/home/xxx/Project/nodeJs/microblog/node_modules/express/lib/router/index.js:139:11) at pass (/home/xxx/Project/nodeJs/microblog/node_modules/express/lib/router/index.js:146:5) at Router._dispatch (/home/xxx/Project/nodeJs/microblog/node_modules/express/lib/router/index.js:173:5) at Object.router (/home/xxx/Project/nodeJs/microblog/node_modules/express/lib/router/index.js:33:10) at next (/home/xxx/Project/nodeJs/microblog/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.handle (/home/xxx/Project/nodeJs/microblog/app.js:35:5) at next (/home/xxx/Project/nodeJs/microblog/node_modules/express/node_modules/connect/lib/proto.js:190:15) at store.get.next (/home/xxx/Project/nodeJs/microblog/node_modules/express/node_modules/connect/lib/middleware/session.js:302:9) POST /reg 500 16ms


11 回复

问题描述

在Node.js项目中,你遇到一个错误 TypeError: Object #<ServerResponse> has no method 'redircet'。这个错误发生在尝试重定向到另一个页面时。

问题原因

错误的原因在于拼写错误。在Node.js中,正确的重定向方法应该是 res.redirect 而不是 res.redircet

解决方案

res.redircet 更正为 res.redirect 即可解决问题。

示例代码

exports.reg = function(req, res) {
  res.render('reg', { title: '用戶註冊' });
};

exports.doReg = function(req, res) {
  if (req.body['password-repeat'] != req.body['password']) {
    req.session.error = '兩次輸入的口令不一致';
    return res.redirect('/reg'); // 更正为正确的redirect方法
  }
  // 其他逻辑
};

解释

  • res.redirect: 这个方法用于重定向客户端到另一个URL。例如,当用户注册失败时,我们希望将其重定向回注册页面。

  • 拼写错误:在原始代码中,redircet 拼写错误,导致Node.js找不到该方法并抛出错误。纠正拼写后,res.redirect 方法将正常工作。

通过上述修改,你应该可以解决这个错误,并且在密码不匹配时能够正确地将用户重定向到注册页面。


停一停,想一想 仔细看看出错信息,别没事跑上来乱吼

这不是事么? 照你这么说,我们这些技术差的新人就不要发贴了。

暂时用这个方法来替代一下可以通过case。 但顶楼的问题根源还没头绪。

if (req.body[‘password-repeat’] != req.body[‘password’]) { req.session.error = ‘兩次輸入的口令不一致’; //return res.redircet(’/reg’);

var redirect = function(redirectionURL){ res.writeHead(302, {‘location’:redirectionURL}); res.end(); } return redirect(’/reg’); }

雷哥已经说的很清楚了~~ 是 res.redirect, 不是 res.redircet

呵呵,我也经常遇到这样的问题,代码敲多了很容易出错,log里面都会打印出来。

很典型的一个例子。

大家都从新人过来的,可能也都经历过这种事情,辛辛苦苦调试了一天原来就写错了一个函数名称。调试技巧需要学习,比如加log,再比如多review几遍代码》

OK。我要说的是,对于一个普及宣传讨论新技术的社区来讲,不应该这么一种情况,“没事别跑上来乱吼”“别做程序员了,很苦逼”。问题没解决不说,打击人的积极性,更让人有些心伤哪。任何一个人被人这么对待,估计都会郁闷个一天。

新人需要鼓励,外加指导和教育,大牛们看不过眼这种问题,自个go away就成了。。

希望社区管理员能重视起来。社区需要热心人,哪怕你是很大的牛,也请不要对待这么一个热心的。

我知道错了

  • 这个问题其实与是否新手没多大关系的。按照我自己的思路,若提示**“has no method ‘redircet’”,直接从之前看的资料中复制那个redirect**单词过来,一看就能分辨出来了。
  • 至于**“没事别跑上来乱吼”这句,我原意是想表达,不要太过于依赖社区,很多问题其实与技术、经验等无关的,养成好的习惯**,细心点看其实就可以解决掉了。而当养成了这个严重依赖社区的习惯时,很多时候一有问题自己也不多想就直接上来问了;
  • 我承认其实我有强迫症

你好,我是初学node.js,最近也在弄开发指南那个例子,看到你曾经做过,所以想请教你个问题,希望能跟你学习学习: if (req.body[‘password-repeat’] != req.body[‘password’]) { req.flash(‘error’,‘两次输入的口令不一致’); //console.log(‘两次输入的口令不一致’); return res.redirect(’/reg’); } req.flash(‘error’,‘两次输入的口令不一致’);这句不执行,我在app.js中添加了这个connect-flash包的引用,在configure中配置了flash,不知道为何还无法运行?请指教~谢谢~

从错误信息来看,res.redircet 应该是 res.redirect 的拼写错误。Express 框架中的 res.redirect 方法用于重定向到另一个路由。

下面是修正后的代码示例:

exports.reg = function(req, res) {
  res.render('reg', { title: '用戶註冊' });
};

exports.doReg = function(req, res) {
  if (req.body['password-repeat'] != req.body['password']) {
    req.session.error = '兩次輸入的口令不一致';
    return res.redirect('/reg'); // 注意这里应为 redirect 而不是 redircet
  }
  // 其他逻辑
};

解释:

  • 拼写错误res.redircet 应该是 res.redirect
  • redirect 方法res.redirect 是 Express 提供的一个方法,用于将用户重定向到另一个 URL。在这个例子中,如果两次输入的密码不一致,则将用户重定向到 /reg 页面,并设置一个错误消息到 req.session.error 中。

通过纠正拼写错误,程序应该可以正常工作。确保你的代码中没有其他类似的拼写错误。

回到顶部