Javascript 无法获取未定义的node.js的get方法
我正在为express应用程序编写一种新的结构和可伸缩性 问题: 我不喜欢在app.js文件中定义每个路由 解决方案: 使某些东西自动化,以便自动加载路由 到目前为止,我在index.js(routes文件夹)文件中有以下代码: 现在,这似乎有效,但我有一点问题 我的想法是将所有内容都放在文件夹中,比如说,这种结构:Javascript 无法获取未定义的node.js的get方法,javascript,node.js,express,Javascript,Node.js,Express,我正在为express应用程序编写一种新的结构和可伸缩性 问题: 我不喜欢在app.js文件中定义每个路由 解决方案: 使某些东西自动化,以便自动加载路由 到目前为止,我在index.js(routes文件夹)文件中有以下代码: 现在,这似乎有效,但我有一点问题 我的想法是将所有内容都放在文件夹中,比如说,这种结构: routes admin posts index.js <- handles add, remove, edit for posts user
routes
admin
posts
index.js <- handles add, remove, edit for posts
users
index.js <- handles add, remove, edit for users
blog
posts
index.js <- handles show for frontend
index.js <- Loads all of the files recursively.
虽然我正在发送应用程序变量
任何帮助都将不胜感激,同时,请随意使用代码。我已经解决了所有问题,现在我的结构化MVC已上线 这是供任何人使用的代码:
var fs = require('fs'),
required_files = [];
module.exports = function(app) {
recursive_require(__dirname, __dirname, app);
function recursive_require(directory, base_dir, app) {
fs.readdirSync(directory).forEach(function (input) {
var next_directory = directory + '/' + input + '/';
// If we are on the base dir, we ignore the index.js file
if (!(required_files.indexOf(base_dir + '/index') > -1)) {
required_files.push(base_dir + '/index');
}
// Check if it's a directory
if (fs.lstatSync(next_directory).isDirectory()) {
// We require it recursively
console.log('Reading directory ' + next_directory);
recursive_require(next_directory.substr(0, next_directory.lastIndexOf('/')), base_dir, app);
} else {
// We require all (except the index.js file if the var is set to true) js files on folder
require_files(directory, app);
return;
}
});
}
function require_files(directory, app) {
fs.readdir(directory, function(err, files) {
files.forEach(function(file) {
if (file.match(/\.js$/g)) {
var file_path = directory + '/' + file;
file_path = file_path.substr(0, file_path.indexOf('.js'));
if (required_files.indexOf(file_path) == -1) {
required_files.push(file_path);
require(file_path)(app);
}
}
});
});
return;
}
}
欢迎任何建议。尝试更改
递归要求(directory.substr(0,directory.lastIndexOf('/'))
torecursive\u require(directory.substr(0,directory.lastIndexOf('/')),app)代码>神圣!,真不敢相信那是我的错误。。。非常感谢!:),现在我面临着另一个错误,但我要自己去看,你这个摇滚!哦,已经修复:),我删除了postYup,现在又出现了另一个错误,文件夹似乎需要一个index.js,所以我必须在不改变逻辑的情况下以某种方式要求它,我已经想到了:)
PS C:\Users\bony-_000\Documents\GitHub\node-blog> node app
Scanning recursively on C:\Users\bony-_000\Documents\GitHub\node-blog\routes/admin/
Reading file/directory posts
No JS files found on C:\Users\bony-_000\Documents\GitHub\node-blog\routes/admin/ going to scan recursively
Scanning recursively on C:\Users\bony-_000\Documents\GitHub\node-blog\routes/admin/posts/
Reading file/directory index.js
Found js files on directory C:\Users\bony-_000\Documents\GitHub\node-blog\routes/admin/posts/
Found JS files on C:\Users\bony-_000\Documents\GitHub\node-blog\routes/admin/posts/, require them
C:\Users\bony-_000\Documents\GitHub\node-blog\routes\admin\posts\index.js:2
app.get('/admin/posts/add', function(req, res) {
^
TypeError: Cannot call method 'get' of undefined
var fs = require('fs'),
required_files = [];
module.exports = function(app) {
recursive_require(__dirname, __dirname, app);
function recursive_require(directory, base_dir, app) {
fs.readdirSync(directory).forEach(function (input) {
var next_directory = directory + '/' + input + '/';
// If we are on the base dir, we ignore the index.js file
if (!(required_files.indexOf(base_dir + '/index') > -1)) {
required_files.push(base_dir + '/index');
}
// Check if it's a directory
if (fs.lstatSync(next_directory).isDirectory()) {
// We require it recursively
console.log('Reading directory ' + next_directory);
recursive_require(next_directory.substr(0, next_directory.lastIndexOf('/')), base_dir, app);
} else {
// We require all (except the index.js file if the var is set to true) js files on folder
require_files(directory, app);
return;
}
});
}
function require_files(directory, app) {
fs.readdir(directory, function(err, files) {
files.forEach(function(file) {
if (file.match(/\.js$/g)) {
var file_path = directory + '/' + file;
file_path = file_path.substr(0, file_path.indexOf('.js'));
if (required_files.indexOf(file_path) == -1) {
required_files.push(file_path);
require(file_path)(app);
}
}
});
});
return;
}
}