Javascript 在node.js中导出模块

Javascript 在node.js中导出模块,javascript,node.js,Javascript,Node.js,我的“getpics.js”文件中有以下代码: 以下是模块的my mail.js callup: var getpics = require('./public/js/slider/getpics.js'); getpics.fileOnDisk(); 这是控制台上的打印输出: ['next.png','next\u hover.png','prev.png','prev\u hover.png', 'slide1.jpg'、'slide2.jpg'、'slide3.jpg'、'slide4.

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

以下是模块的my mail.js callup:

var getpics = require('./public/js/slider/getpics.js');
getpics.fileOnDisk();
这是控制台上的打印输出:

['next.png','next\u hover.png','prev.png','prev\u hover.png',
'slide1.jpg'、'slide2.jpg'、'slide3.jpg'、'slide4.jpg',
'slide5.jpg']

直到现在一切都很好


问题是为什么我无法导出此模块之外的“文件”,例如在变量中,以便在我的应用程序中使用它们?

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

然而,NodeJS文件系统API确实提供了同步方法。具体到你的情况。在代码中使用它,您将得到如下结果:

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

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

exports.fileOnDisk = fs.readdirSync(directoryPath, {encoding: 'utf8'})
然后,您可以直接从
fileOnDisk
导入此模块并访问目录数组


但是要小心,因为此代码将是

即使您正确地导出了
filesOnDisk
函数,它也不会像您期望的那样工作。你需要先学会如何去做。
var path = require('path');
var fs = require('fs');

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

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