无法使用nodejs进行GET?(Cannot GET with nodejs?)
我有一些简单的nodejs应用程序与一些用户。 我想使用URL localhost / users /(username)加载特定的用户配置文件,但是当我尝试加载URL时出现此错误:
Cannot GET /users/test
这是我的用户页面的user.js路由文件:
var express = require('express'); var router = express.Router(); var User = require('../models/user'); // GET user by username router.get('/users/:username', function(req, res) { var username = req.params.username; res.send(req.params); res.render('user'); }); module.exports = router;
我在我的视图文件夹中有一个user.handlebars文件,所以它应该加载文件。 我在路线文件中缺少什么? 任何帮助将不胜感激。 谢谢!!
编辑:app.js:
console.log('Starting app.js'); const fs = require('fs'); const _ = require('lodash'); const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const bodyParser = require('body-parser'); const exphbs = require('express-handlebars'); const expressValidator = require('express-validator'); const flash = require('connect-flash'); const session = require('express-session'); const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const mongo = require('mongodb'); const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/tipcup'); var db = mongoose.connection; const routes = require('./routes/index'); const users = require('./routes/users'); const user = require('./routes/user'); // Init App var app = express(); // View Engine app.set('views', path.join(__dirname, 'views')); app.engine('handlebars', exphbs({defaultLayout: 'layout'})); app.set('view engine', 'handlebars'); // BodyParser middleware app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false})); app.use(cookieParser()); // Set Static Folder app.use(express.static(path.join(__dirname, 'public'))); // Express Session app.use(session({ secret: 'secret', saveUninitialized: true, resave: true })); // Passport Init app.use(passport.initialize()); app.use(passport.session()); // Express Validator app.use(expressValidator ({ errorFormatter: function(param, msg, value) { var namespace = param.split('.') , root = namespace.shift() , formParam = root; while(namespace.length){ formParam += '[' + namespace.shift() + ']'; } return { param: formParam, msg: msg, value: value }; } })); // Connect Flash app.use(flash()); // Global Vars app.use(function (req, res, next){ res.locals.success_msg = req.flash('success_msg'); res.locals.error_msg = req.flash('error_msg'); res.locals.error = req.flash('error'); res.locals.user = req.user || null; next(); }); app.use('/', routes); app.use('/users', users); app.use('/users/:username', user); // Set Port app.set('port', (process.env.PORT || 3000)); app.listen(app.get('port'), function(){ console.log('Server started on port '+app.get('port')); });
I have a simple nodejs app with some users. I want to load a specific user profile using a URL localhost/users/(username) but I'm getting this error when I try to load the URL:
Cannot GET /users/test
Here's my user.js routes file for the user page:
var express = require('express'); var router = express.Router(); var User = require('../models/user'); // GET user by username router.get('/users/:username', function(req, res) { var username = req.params.username; res.send(req.params); res.render('user'); }); module.exports = router;
I have a user.handlebars file in my views folder so it should load the file. What am I missing in my routes file? Any help would be greatly appreciated. Thanks!!
EDIT: app.js:
console.log('Starting app.js'); const fs = require('fs'); const _ = require('lodash'); const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const bodyParser = require('body-parser'); const exphbs = require('express-handlebars'); const expressValidator = require('express-validator'); const flash = require('connect-flash'); const session = require('express-session'); const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const mongo = require('mongodb'); const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/tipcup'); var db = mongoose.connection; const routes = require('./routes/index'); const users = require('./routes/users'); const user = require('./routes/user'); // Init App var app = express(); // View Engine app.set('views', path.join(__dirname, 'views')); app.engine('handlebars', exphbs({defaultLayout: 'layout'})); app.set('view engine', 'handlebars'); // BodyParser middleware app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false})); app.use(cookieParser()); // Set Static Folder app.use(express.static(path.join(__dirname, 'public'))); // Express Session app.use(session({ secret: 'secret', saveUninitialized: true, resave: true })); // Passport Init app.use(passport.initialize()); app.use(passport.session()); // Express Validator app.use(expressValidator ({ errorFormatter: function(param, msg, value) { var namespace = param.split('.') , root = namespace.shift() , formParam = root; while(namespace.length){ formParam += '[' + namespace.shift() + ']'; } return { param: formParam, msg: msg, value: value }; } })); // Connect Flash app.use(flash()); // Global Vars app.use(function (req, res, next){ res.locals.success_msg = req.flash('success_msg'); res.locals.error_msg = req.flash('error_msg'); res.locals.error = req.flash('error'); res.locals.user = req.user || null; next(); }); app.use('/', routes); app.use('/users', users); app.use('/users/:username', user); // Set Port app.set('port', (process.env.PORT || 3000)); app.listen(app.get('port'), function(){ console.log('Server started on port '+app.get('port')); });
原文:https://stackoverflow.com/questions/48598516
相关问答
更多-
使用箭头键移动元素(Move elements with arrow keys)[2021-10-17]
我不确定你是否仍然需要解决方案,但你可以检查一下: http : //jsfiddle.net/ft2PD/41/ 这是html -
箭头键不能在窗体上工作(Arrow Keys Not Working on Form)[2023-12-22]
您可以使用jQuery检查目标是否为表单元素(因为您正在使用它),如果没有,则不要调用阻塞默认行为的恶意代码。 function keydown(e) { // Don't block arrow keys on form elements if( $(e.target).is(':input') ) { return; } for (var i = keys.length; i--;) { if (e.keyCode === keys[i]) ... -
有不同的情况: 如果使用TKinter或PyGame等图形前端,则可以将事件绑定到箭头键并等待此事件。 Tkinter的例子来自这个答案 : from Tkinter import * main = Tk() def leftKey(event): print "Left key pressed" def rightKey(event): print "Right key pressed" frame = Frame(main, width=100, height=100) main ...
-
在WebView Google电视应用上处理来自D-pad的箭头键(Handle arrow keys from D-pad on WebView Google Tv app)[2023-12-04]
Google TV样本上有一个名为WebAppNativePlayback的示例应用: https : //code.google.com/p/googletv-android-samples/source/browse/#git%2FWebAppNativePlayback 本质上,d-pad由本机应用程序使用,因此您需要处理它,如果您使用全屏WebView,则可以通过将相关键传入JS中来将其传递给WebView。 要注意的主要代码是: 在Activity中,使用关键事件并传递下来: /** * Thi ... -
我认为你的问题在于你的select(DecisionTableTable, int, boolean)方法。 我不确定被重写的setSelection\selectionChanged方法的确切影响,但它们似乎过于复杂。 你能不能只满足你的要求: private void select(DecisionTableTable viewer, int index, boolean reveal) { int count = viewer.getTable().getItemCount(); vi ...
-
几乎所有终端上的箭头键都会发送转义序列。 如果程序处理箭头键,则通过注意到读取转义字符来执行此操作,并通过查找转义序列的其余部分进行跟进。 不期望转义序列的程序通常会使用默认的终端I / O模式,其中操作系统的终端驱动程序通常将转义字符作为^[ (因为在大多数键盘上,您可以通过这种方式键入转义字符)。 根据您的描述,听起来好像MyBayes不期望转义序列。 您应该能够使用终端发送的退格或删除( 擦除 )字符,而不是使用箭头键进行命令行编辑。 To fix this behaviour, installing ...
-
使用箭头键进行更长时间的keydown后,clearInterval无法正常工作(clearInterval not working after longer keydown with arrow key)[2021-12-13]
好的,我发现了什么问题。 Keydown重复,与mousedown相反,因此在使用keydown时setInterval被设置多次。 在重复开始之前需要一段时间,这就是为什么之前的代码在短时间内按下时才起作用的原因。 以防万一有人想看到: 小提琴 。 无论如何,感谢阅读。 改进JS: $(document).ready(function () { "use strict"; var imgRow = $(".img-row-scroller"); var scrollBtnLeft ... -
选项卡完成和箭头键在Git Bash的GHCI中不起作用(Tab completion and arrow keys don't work in GHCI in Git Bash)[2021-12-29]
我没有在这里收到任何回复,我将问题交叉发布到项目的GitHub存储库 。 显然,这个问题似乎与薄荷终端模拟器有关。 如果您使用ConHost仿真器安装Git Bash,问题就会消失。 Not having received any responses here, I cross-posted the question to the project's GitHub repository. Apparently, this issue seems to be related to the mintty ter ... -
开发人员可能不认为SeekBar是使用非触摸输入或TalkBack等可访问性服务来控制视频的合适组件。 你绝对可以实现一些适用于键盘的东西,至少对于桌面模式。 例如,即使SeekBar没有聚焦,YouTube.com也允许用户使用左/右箭头键向后/向前搜索。 SeekBar 也可以使用tab键,但在Android上,光标键也是可聚焦组件之间导航的合法功能,因此实现相同的UX更加困难。 另一方面,您也可以使用SeekBar控件进行其他可访问性考虑。 控制的一个关键部分是拖动能力 - 使用TalkBack你需要 ...