Javascript 在node.js中导出模块
我的“getpics.js”文件中有以下代码: 以下是模块的my mail.js callup: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.
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'})