// 打开页面时报错
url: http://127.0.0.1;3000/login
// login 路由设置
// login.js
使用 redis 作为缓存数据库,为了练手
请教问题出在哪里,连页面也无法渲染?
// 打开页面时报错
url: http://127.0.0.1;3000/login
// login 路由设置
// login.js
使用 redis 作为缓存数据库,为了练手
请教问题出在哪里,连页面也无法渲染?
来自2020年穿越5年的回答,哦,我的老伙计,这个题主写问题也太惜字如金了,我只有从别人评论的里才推测出题主当年在翻看《Node.js实战》这本书,因为5年后的今天我正在看这本五年前的“古籍”然后也毫无悬念的栽倒在这个坑上,我也不知道题主的解决办法,我说说我的解决办法吧。
第一步:不要参考书上的这个写法
// ./lib/middleware/page.js
var page = Math.max(
parseInt(req.param('page') || '1', 10),
1
) - 1;
req.param('page') 会是NaN这将直接导致报错,改成这个
// ./lib/middleware/page.js
var intPage = isNaN(parseInt(req.param("page", 10)))
? 1
: parseInt(req.param("page", 10));
var page = Math.max(parseInt(intPage, 10), 1) - 1;
第二步,修改app.js中的路由顺序,将分页路由移动到其他路由的后面
// app.js
app.get('/register', register.form);
app.post('/register', register.submit);
app.get('/login', login.form);
app.post('/login', login.submit);
app.get('/logout', login.logout);
app.get('/post', entries.form);
app.post(
'/post',
validate.required('entry[title]'),
validate.lengthAbove('entry[title]', 4),
entries.submit
);
app.get('/api/user/:id', api.user);
app.post('/api/entry', entries.submit);
app.get('/api/entries/:page?', page(Entry.count), api.entries);
app.get('/:page?', page(Entry.count, 5), entries.list);
希望将来的某一天,如果有后人看这本书入门node.js时如果碰到了这个问题,能对你有所帮助。
以上。。。
5 回答4.8k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答1.7k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答1.9k 阅读✓ 已解决
3 回答10.1k 阅读
3 回答4.8k 阅读
1 回答2.6k 阅读
4.5k 阅读
688 阅读
找到原因了,原因是显示主页时,用了一个中间件,设定了参数但是没有执行,等到其余的页面使用时,调用了刚才那个参数,因为参数类型而报错