无法在我的 Node.js Express.js 应用程序中设置路由
Posted
技术标签:
【中文标题】无法在我的 Node.js Express.js 应用程序中设置路由【英文标题】:Cannot set a route in my Node.js Express.js application 【发布时间】:2013-07-09 13:34:36 【问题描述】:我有我的 Node.js 应用程序,并且我也在使用 Express.js 框架。目录结构如下:
myapp
+-- node_modules
+-- public
+-- routes
|-- index.js
|-- mynewpage.js
+-- views
|-- index.ejs
|-- mynewpage.ejs
|-- app.js
|-- package.json
app.js
文件是这样的:
2 /**
3 * Module dependencies.
4 */
5
6 var express = require('express')
7 , routes = require('./routes')
9 , http = require('http')
10 , path = require('path');
11
12 var app = express();
13
14 // all environments
15 app.set('port', process.env.PORT || 3000);
16 app.set('views', __dirname + '/views');
17 app.set('view engine', 'ejs');
18 app.use(express.favicon());
19 app.use(express.logger('dev'));
20 app.use(express.bodyParser());
21 app.use(express.methodOverride());
22 app.use(express.cookieParser('your secret here'));
23 app.use(express.session());
24 app.use(app.router);
25 app.use(require('less-middleware')( src: __dirname + '/public' ));
26 app.use(express.static(path.join(__dirname, 'public')));
27
28 // development only
29 if ('development' == app.get('env'))
30 app.use(express.errorHandler());
31
32
33 app.get('/', routes.index);
35 app.get('/mynewpage', routes.mynewpage); /* THIS LINE */
36
37 http.createServer(app).listen(app.get('port'), function()
38 console.log('Express server listening on port ' + app.get('port'));
39 );
文件mynewpage.js
如下:
exports.mynewpage = function(req, res)
res.render('mynewpage', title: 'Hello' , function(err, html) );
;
当我尝试:node app.js
使用我标记为未注释的行时,我收到此错误:
/home/myuser/www/app-www/node_modules/express/lib/router/index.js:252 抛出新的错误(味精); ^ 错误:.get() 需要回调函数,但得到了 [object Undefined] 在/home/myuser/www/app-www/node_modules/express/lib/router/index.js:252:11 在 Array.forEach (本机) 在 Router.route (/home/myuser/www/app-www/node_modules/express/lib/router/index.js:248:13) 在 Router.(匿名函数) [as get] (/home/myuser/www/app-www/node_modules/express/lib/router/index.js:270:16) 在 Function.app.(匿名函数) [as get] (/home/myuser/www/app-www/node_modules/express/lib/application.js:413:26) 在对象。 (/home/myuser/www/app-www/app.js:35:5) 在 Module._compile (module.js:456:26) 在 Object.Module._extensions..js (module.js:474:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:312:12)
如果我取消注释该行,一切顺利。 有什么问题?谢谢你
【问题讨论】:
【参考方案1】:您将exports.mynewpage
放入mynewpage.js
文件中,但没有在任何地方引用它,并试图从routes
对象中使用它。
虽然您为 ./routes
调用了 required
,但它只会加载 index.js
,但不会加载该文件夹中的所有文件。
只需将该回调的代码放入routes.js
即可。
【讨论】:
它在app.js中被引用:第一行,可以看到require('./routes')指令... 但它不会包含所有 .js 文件,只包含 index.js。如果要包含所有这些文件,则需要单独引用每个文件。检查这个答案***.com/questions/5364928/… 非常感谢您的怀疑:) '你不能毫无疑问地拥有信仰' - 亚伯拉罕【参考方案2】:var mynewpage = require('./routes/mynewpage');
必须要求才能将其称为您创建的原始方式。
【讨论】:
以上是关于无法在我的 Node.js Express.js 应用程序中设置路由的主要内容,如果未能解决你的问题,请参考以下文章
UnhandledPromiseRejectionWarning、Express.js 和 Node.js
每次在 Node.js (Express.js) 中发出 API 请求之前,如何简化 Fetching Auth token?
node.js + express.js + socket.io 授权:没有cookie
CRUD op Express.js Node.js Mysql 无法使用 MVC 插入