2016-11-25 77 views
1

我想随机从图像目录中获取图像。但是,我目前的代码不起作用。任何帮助表示赞赏!如何在快速环境中从图像目录中获取随机图像

var express = require('express'); 
var router = express.Router(); 
const fs = require('fs'); 

function getRandFile() { 
    const imageDir = '../public/images/'; 
    fs.readdir(imageDir, (err, files) => { 
    files.forEach(file => { 
    //will add file name to an array and then return a random file name 
    }); 
}) 

} 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('./index.jade', { backgroundImage:getRandFile() }); 
}); 

module.exports = router; 

我得到的错误是:

/Users/ron/Dropbox/dev/moments/routes/index.js:9 
    files.forEach(file => { 
    ^

TypeError: Cannot read property 'forEach' of undefined 
    at fs.readdir (/Users/ron/Dropbox/dev/moments/routes/index.js:9:8) 
    at FSReqWrap.oncomplete (fs.js:111:15) 

目录结构:

/ 
/public 
    /images 
    | 1.jpg 
    | 2.jpg 
    | etc 
/routes 
    | index.js <-- where I am calling the function getRandFile() 

回答

1

不像require功能,fs.readdir(和所有fs功能)的作品相对于电流工作目录,不一定是当前脚本所在的目录。当前的wo rking目录取决于Node进程的启动方式。

如果您想要访问相对于当前目录的文件,则可以使用内置的__dirname全局替代,它始终包含当前正在执行的文件的路径。

var path = require('path') 

const imageDir = path.resolve(__dirname, '../public/images/')