gpt4 book ai didi

javascript - Node.js 中的导出模块

转载 作者:行者123 更新时间:2023-12-03 00:51:24 26 4
gpt4 key购买 nike

我的“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' ]

到目前为止一切都很好。

问题是为什么我无法导出此模块之外的"file"(例如在变量中)以在我的应用程序中使用它们?

最佳答案

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

但是,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 访问目录数组。

但是要小心,此代码将是 blocking

关于javascript - Node.js 中的导出模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53025600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com