bluebird - fs.readdir().then - 无法读取未定义的属性
Posted
技术标签:
【中文标题】bluebird - fs.readdir().then - 无法读取未定义的属性【英文标题】:bluebird - fs.readdir().then - cannot read propery then of undefined 【发布时间】:2017-04-02 13:39:54 【问题描述】:我正在尝试使用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').then(function(err, 目录) ^
TypeError:无法读取未定义的属性“then” 在对象。 (/Users/shooshte/Sportradar/notThatKindOfPeon/bluebird.js:4:20) 在 Module._compile (module.js:570:32) 在 Object.Module._extensions..js (module.js:579:10) 在 Module.load (module.js:487:32) 在 tryModuleLoad (module.js:446:12) 在 Function.Module._load (module.js:438:3) 在 Module.runMain (module.js:604:10) 运行时(bootstrap_node.js:394:7) 启动时(bootstrap_node.js:149:9) 在 bootstrap_node.js:509:3
我做错了什么?
【问题讨论】:
【参考方案1】:似乎库在方法名称中添加了“Async”: 它对我有用:
const Promise = require('bluebird');
const fs = Promise.promisifyAll(require('fs'));
fs.readdirAsync('./XML').then(function(directories)
console.log(directories);
);
【讨论】:
【参考方案2】:fs.readdirAsync('./XML').then()
Documentation, second sentence:
promisified 方法名将是原始方法名加后缀(默认为“Async”)。
【讨论】:
【参考方案3】:您可能只想承诺您将要使用的功能:
const readdir = require('bluebird').promisify(require('fs').readdir);
return readdir(dir).then(function(err, files)
console.log('FILES', files)
return files;
);
【讨论】:
以上是关于bluebird - fs.readdir().then - 无法读取未定义的属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 fs.readdir 和 fs.statSync 返回 ENOENT,没有这样的文件或目录错误