gpt4 book ai didi

node.js - 向 node express 添加新路由

转载 作者:IT老高 更新时间:2023-10-28 23:00:52 25 4
gpt4 key购买 nike

我正在尝试在我的快速应用程序中添加新路由,但在尝试启动服务器时不断出错。错误是

C:\development\node\express_app\node_modules\express\lib\router\index.js:252
throw new Error(msg);
^
Error: .get() requires callback functions but got a [object Undefined]

这是我的文件,我是 node 新手,如果我遗漏了重要文件,请告诉我

路线/家具.js

exports.furniture = function(req, res){
res.render('furniture', { title: '4\267pli' });
};

路由/index.js

/*
* GET home page.
*/

exports.index = function(req, res){
res.render('index', { title: '4\267pli' });
};

views/furniture.ejs

<!DOCTYPE html>
<html>
<head>
<title>4&middot;pli -- architecture</title>
<link rel='stylesheet' href='/stylesheets/style.css'/>
<link href='http://fonts.googleapis.com/css?family=Didact+Gothic' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="wrapper">
<h1 class="logo"><%= title %></h1>
</div>
</body>
</html>

app.js

/**
* Module dependencies.
*/

var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, furniture = require('./routes/furniture')
, http = require('http')
, path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);
app.get('/furniture', routes.furniture);

http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});

最佳答案

问题是:

 routes = require('./routes'),
user = require('./routes/user'),
furniture = require('./routes/furniture'),

这3个是设置你的路由文件夹,不是特定的文件,express会找一个index.js(没找到,然后-->错误)

在这些文件夹中,您应该将 index.js 与您的:

exports.xxxx =  function(req, res){
res.render('xx', { foo: foo});
};

然后,您的项目文件夹结构应如下所示:

routes/
├── index.js

├── user/
│ └── index.js (with a exports.user inside)

└── fourniture/
└── index.js (with a exports.furniture inside)

您可以将多个导出功能添加到这样的路由中:

app.js

// a folder called routes with the index.js file inside
routes = require('./routes')

.
.
.

app.get('/', routes.main_function);
app.get('/sec_route', routes.sec_function);
app.post('/other_route', routes.other_function);

/routes/index.js

exports.main_function =  function(req, res){
res.render('template1', { foo: foo });
};

exports.sec_function = function(req, res){
res.render('template2', { bar: bar });
};

exports.other_function = function(req, res){
res.render('template1', { baz: baz });
};

关于node.js - 向 node express 添加新路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com