Expressjs路由基于对象数组

时间:2017-06-29 17:30:54

标签: node.js express

尝试根据ExpressJS中的对象数组设置路由,但是在尝试访问路径时遇到错误。

错误是这样的:

  

TypeError:shares [Symbol.iterator]不是函数       在路由器   (C:\用户\ rutherfordc.AA \文件\ GitHub的\ transientComplete \瞬态服务器\路由\ shares.js:10:18)       在Layer.handle [as handle_request](C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ layer.js:95:5)       在trim_prefix(C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ index.js:317:13)       在C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ index.js:284:7       在Function.process_params(C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ index.js:335:12)       在下一个(C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ index.js:275:10)       at expressInit(C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ middleware \ init.js:40:5)       在Layer.handle [as handle_request](C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ layer.js:95:5)       在trim_prefix(C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ index.js:317:13)       在C:\ Users \ rutherfordc.AA \ Documents \ GitHub \ transientComplete \ transient-server \ node_modules \ express \ lib \ router \ index.js:284:7

来自这样的代码:

 var router = (shares) => {
  for(let share of shares){
    shareRouter.route(`/${share.name}`)
    .get((req, res) => {
      var fileList = [];
      fs.readdir(share.location, (err, files) => {
        for(let file in files){
          fileList.push(file);
          shareRouter.route(`/${file}`)
                      .get((req, res) => {
                       var filePath = path.join(share.location, file);
                        res.download(filePath, `${file}`);
                      });
        }
      }).then(()=>{
        res.render('shareFiles', fileList);
      });
    });
  }
};

共享是在路由器函数调用之前定义的。应该发生的是,当应用程序启动时,它会查看先前导入的配置文件,获取要共享的文件夹列表,并根据对象的name属性设置它们,然后浏览文件夹中的每个文件,根据文件名创建路径,然后将其传递到提供文件路径链接的pug模板。

0 个答案:

没有答案