缺少回调功能

时间:2013-11-28 08:20:22

标签: javascript node.js

function onRequest(req, res) {
    if (req.body.widget_name) {
        console.log(req.body.widget_name);
    }
    var fs = require('fs');
    var data = fs.readdir("corpdashboard/dashboards", 'UTF-8', function (err, files) {
        if (err) {
            return console.log(err);
        }
        console.log(data);
    });
    var body = req.body.dashboard_selected + ' ' + req.body.widget_selected + ' ';
    res.setHeader('Content-Type', 'text/plain');
    res.setHeader('Content-Length', body.length);
    res.end(body);
}
exports.onrequest = onRequest;

我想读取目录和文件,所以我编写了这段代码并运行它。在运行我得到的fs:缺少回调函数:ENOENT readdir'D:\ dev \ corpdashboboard \ dashboard.js' 'D:\ dev \ corpdashboboard'是我拥有我的ejs文件和js文件的地方 这是什么意思? 我该怎么做才能读取其中的目录和文件

2 个答案:

答案 0 :(得分:1)

来自官方规范:http://nodejs.org/api/fs.html#fs_fs_readdir_path_callback

fs.readdir(path, callback)
Asynchronous readdir(3). Reads the contents of a directory.
The callback gets two arguments (err, files) where files is
an array of the names of the files in the directory excluding '.' and '..'.

您使用的是错误的参数。 fs.readdir()不接受编码。因此readdir期望path是一个字符串而callback是一个函数。

应该是:

var data = fs.readdir('corpdashboard/dashboards',function (err, files) {
    if (err) {
         return console.log(err);
    }
    console.log(data);
});

答案 1 :(得分:0)

对于阅读此内容的任何人的说明:上的答案有效,但在Node v6.x中,fs.readdir确实接受了另一个参数,您可以在文档中看到。 https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback

如果您遇到此问题,请检查以确保您正在运行Node v6.0.0或更高版本。