Bluebird - fs.readdir().无法读取未定义的属性



我正在尝试使用bluebird来承诺fs readdir功能。我只想读取目录中的所有文件,然后输出带有console.log的数组。

const Promise = require('bluebird');
const fs = Promise.promisifyAll(require('fs'));
fs.readdir('./XML').then(function(err, directories) {
  console.log(directories);
});

得到以下输出:

fs.readdir("。/XML")。然后(function(err, directories) {^

TypeError: Cannot read property 'then' of undefined在对象。(/用户/shooshte/Sportradar/notThatKindOfPeon/bluebird.js: 4:20)在模块。_compile (module.js 570:32):at Object.Module._extensions. js (module.js:579:10)在模块。负载(module.js 487:32):at tryModuleLoad (module.js:446:12)在Function.Module。_load (module.js 438:3):at Module.runMain (module.js:604:10)(bootstrap_node.js:394:7)启动时(bootstrap_node.js:149:9)在bootstrap_node.js: 509:3

我做错了什么?

似乎库在方法名中添加了"Async":它对我来说是这样的:

const Promise = require('bluebird');
const fs = Promise.promisifyAll(require('fs'));
fs.readdirAsync('./XML').then(function(directories) {
  console.log(directories);
});
fs.readdirAsync('./XML').then()

文档,第二句:

承诺的方法名将是原始方法名加后缀(默认为"Async")。

您可能希望只承诺要使用的函数:

const readdir = require('bluebird').promisify(require('fs').readdir);
return readdir(dir).then(function(err, files) {
  console.log('FILES', files)
  return files;
});

最新更新