Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取未定义的node.js的get方法_Javascript_Node.js_Express - Fatal编程技术网

Javascript 无法获取未定义的node.js的get方法

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

我正在为express应用程序编写一种新的结构和可伸缩性

问题:

我不喜欢在app.js文件中定义每个路由

解决方案:

使某些东西自动化,以便自动加载路由

到目前为止,我在index.js(routes文件夹)文件中有以下代码:

现在,这似乎有效,但我有一点问题

我的想法是将所有内容都放在文件夹中,比如说,这种结构:

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('/'))
to
recursive\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;
  }
}