Nodejs express.router 报错 解决办法
Nodejs express.router 报错 解决办法
app.js:
/*************************** Begain of app.js ******************************** /
var express = require(‘express’);
// 路由文件 var routes = require(’./routes’); // 默认路由文件 index.js var my = require(’./routes/my’); // Notice: my.js是自定义的路由文件 var http = require(‘http’); var path = require(‘path’); var util = require(‘util’); var partials = require(‘express-partials’); var app = express();
// all environments app.set(‘port’, process.env.PORT || 3000); app.set(‘views’, path.join(dirname, ‘views’)); // 页面模板位置 app.set(‘view engine’, ‘ejs’); // 模板引擎 app.use(partials()); app.use(express.favicon()); app.use(express.logger(‘dev’)); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.cookieParser(‘your secret here’)); app.use(express.session()); app.use(app.router); // Notice app.use(express.static(path.join(dirname, ‘public’)));
// development only if (‘development’ == app.get(‘env’)) { app.use(express.errorHandler()); }
// 路由 注意先后顺序 routes(app); my(app);
http.createServer(app).listen(app.get(‘port’), function(){ console.log('Express server listening on port ’ + app.get(‘port’)); });
/*************************** End of app.js ****************************** /
my.js: // 路由文件
/************************** Begain of my.js ********************************/
module.exports = function(app) { app.get(’/my’, function(req, res) { res.send(‘This is the mongodb page for test.’); });
} /****************************** End of my.js *************************/
Nodejs express.router 报错 解决办法
在使用 express.router
的过程中,可能会遇到一些常见的错误。以下是一些可能遇到的问题及对应的解决方法。
问题描述
假设你已经按照上面的代码配置了你的 app.js
和 my.js
文件,但在运行应用时遇到了一些错误。
常见错误及解决方法
-
未正确加载路由文件
确保你在
app.js
中正确地引入并调用了路由文件。例如:// app.js var express = require('express'); var routes = require('./routes'); // 默认路由文件 index.js var my = require('./routes/my'); // 自定义的路由文件
-
路由函数没有正确绑定
确保你在
my.js
中的路由函数正确地绑定到app
对象上。例如:// my.js module.exports = function(app) { app.get('/my', function(req, res) { res.send('This is the mongodb page for test.'); }); }
-
确保路由文件被正确调用
在
app.js
中,确保你按正确的顺序调用了路由文件:// app.js routes(app); my(app);
-
检查中间件的使用
确保所有必要的中间件都已正确加载。例如,
express.json()
和express.urlencoded()
应该在app.router
之前加载,以确保它们能处理请求体数据。// app.js app.use(express.json()); app.use(express.urlencoded()); app.use(app.router);
-
检查依赖库的版本
确保你使用的
express
和其他相关库的版本是最新的或兼容的。例如,如果你使用的是较新版本的express
,express.router
可能已经被移除,你可以直接使用app.get
方法。// app.js var express = require('express'); var router = express.Router(); router.get('/my', function(req, res) { res.send('This is the mongodb page for test.'); }); module.exports = router;
示例代码
以下是经过修正后的代码示例:
app.js
// app.js
var express = require('express');
var routes = require('./routes'); // 默认路由文件 index.js
var my = require('./routes/my'); // 自定义的路由文件
var http = require('http');
var path = require('path');
var util = require('util');
var partials = require('express-partials');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views')); // 页面模板位置
app.set('view engine', 'ejs'); // 模板引擎
app.use(partials());
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
// 路由 注意先后顺序
routes(app);
my(app);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
my.js
// my.js
module.exports = function(app) {
app.get('/my', function(req, res) {
res.send('This is the mongodb page for test.');
});
}
通过以上步骤,你应该能够解决大部分与 express.router
相关的问题。如果仍然有问题,请检查具体的错误信息,并根据错误信息进行调试。
不是app.use(app.router)的错,而是启动静态文件的错 应该是app.use(express.static(path.join(__dirname, ‘public’)));
Thinks
真细心啊
good
根据你提供的 app.js
和 my.js
文件的内容,你的报错可能是由于某些不兼容的模块或者配置问题。以下是一些常见的解决方法和建议:
-
确保安装了所有必需的依赖项: 确保你已经安装了所有必需的模块。你可以使用
npm install
来安装所有依赖项。npm install express express-partials ejs
-
更新
app.js
中的express.router
使用方式: 在较新版本的 Express 中,app.router
已经被弃用。你可以直接使用app.use
替代。修改
app.js
如下:var express = require('express'); var routes = require('./routes'); // 默认路由文件 index.js var my = require('./routes/my'); // Notice: my.js是自定义的路由文件 var http = require('http'); var path = require('path'); var util = require('util'); var partials = require('express-partials'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); // 页面模板位置 app.set('view engine', 'ejs'); // 模板引擎 app.use(partials()); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(express.static(path.join(__dirname, 'public'))); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } // 路由 注意先后顺序 routes(app); my(app); http.createServer(app).listen(app.get('port'), function() { console.log('Express server listening on port ' + app.get('port')); });
-
检查
my.js
文件中的语法错误: 确保my.js
文件中的语法没有问题。以下是修正后的my.js
:module.exports = function(app) { app.get('/my', function(req, res) { res.send('This is the mongodb page for test.'); }); };
通过以上步骤,你应该可以解决你遇到的问题。如果仍然存在其他错误,请提供具体的错误信息以便进一步诊断。