繁体   English   中英

node.js中的导出模块

[英]export module in node.js

我的“ getpics.js”文件中包含以下代码:

var path = require('path');
var fs = require('fs');

const directoryPath = './public/img/slider'

exports.fileOnDisk = function(){
    fs.readdir(directoryPath, function (err, files) {
        //handling error
        if (err) {
            return console.log('Unable to scan directory: ' + err);
        };
        console.log(files);    
        return files;
    });

}

return module.exports;

这是我对模块的mail.js调用:

var getpics = require('./public/js/slider/getpics.js');
getpics.fileOnDisk();

这是控制台上的打印输出:

['next.png','next_hover.png','prev.png','prev_hover.png',
'slide1.jpg','slide2.jpg','slide3.jpg','slide4.jpg',
'slide5.jpg']

到目前为止一切都很好。

问题是为什么我不能在模块之外导出“文件”(例如在变量中)以在应用程序中使用它们?

无法直接导出这些文件的原因是由于fs.readdir的异步特性,尤其是文件系统调用fs.readdir 由于该函数调用以异步方式处理,因此代码执行将继续进行,并且您将无法访问该函数的任何结果以导出该函数。 您可以在NodeJSabout部分中阅读有关它的更多信息。

但是,NodeJS文件系统API确实提供了同步方法。 专门针对您的情况fs.readdirSync 在您的代码中使用该代码,您将得到如下结果:

var path = require('path');
var fs = require('fs');

const directoryPath = './public/img/slider'

exports.fileOnDisk = fs.readdirSync(directoryPath, {encoding: 'utf8'})

然后,您可以导入此模块并直接从fileOnDisk访问目录数组。

但是请小心,因为此代码将被阻塞

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM