[英]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
。 由于该函数调用以异步方式处理,因此代码执行将继续进行,并且您将无法访问该函数的任何结果以导出该函数。 您可以在NodeJS的about部分中阅读有关它的更多信息。
但是,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.