首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError: fs.createReadStream不是函数

TypeError: fs.createReadStream不是函数
EN

Stack Overflow用户
提问于 2019-11-05 03:14:47
回答 1查看 11.8K关注 0票数 1

我更喜欢使用promises而不是回调,所以我使用了util.promisify

代码语言:javascript
运行
复制
`use strict`;

const util = require(`util`),
    request = util.promisify(require(`request`)),
    fs = require(`fs`).promises;

module.exports = async (message, api) => {
    const end = api.sendTypingIndicator(message.threadID);
    const data = await request({ url: `https://api.thecatapi.com/v1/images/search`, followAllRedirects: true });
    const [json] = JSON.parse(data.body);
    console.log(fs);
    const image = await request(json.url);
    await fs.writeFile(`kitty.png`, image.body, `binary`);
    const attachments = {attachment: fs.createReadStream(`kitty.png`)};
    await fs.unlink(`kitty.png`);
    end();
    return attachments;
};

我在const attachments = {attachment: fs.createReadStream('kitty.png')}; lane收到了TypeError: fs.createReadStream is not a function。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-05 03:22:02

fs.promises不是fs的超集。虽然它将fs上的一些方法替换为返回promise的相同核心名称的方法,但它并不包含普通fs所具有的所有内容。

createReadStream()是常规require('fs')对象上的方法,而不是require('fs').promises上的方法。

这就是为什么而不是建议你这样做的原因:

代码语言:javascript
运行
复制
fs = require('fs').promises;

因为它会误导所有人,包括您自己,让他们认为fs是nodejs fs的核心模块。事实并非如此。

相反,我建议这样做:

代码语言:javascript
运行
复制
const util = require('util'),
    request = util.promisify(require('request')),
    fs = require('fs'),
    fsp = fs.promises;

然后,您可以根据需要同时使用fsfsp,包括fs.createReadStream()

是的,这看起来确实有点凌乱。也许fs模块到promises的转换只完成了一部分,有一天你可以使用fs.promises作为一个完全的替代品--我真的不知道在这个模块上工作的人打算做什么。目前,您必须同时使用这两个版本才能访问全部功能。

另外,要小心util.promisify(require('request'))。请求函数不使用标准的异步回调签名(err, result),因为它向回调(err, response, body)传递了三个参数,而不是通常的两个。有一些请求派生模块已经被简化(request-promiserequest-promise-native),完全可以与promises一起使用。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58699731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档