You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中writeFileSync保存translateText响应至TXT文件失败问题

解决异步翻译函数结果保存到TXT文件的报错问题

问题描述

使用异步函数translateText()时,两次尝试将结果保存到TXT文件均报错:

  1. 初始报错:

TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Promise

  1. 添加await后报错:

TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView.(提示接收到数组)

相关流程:

  • 从ImagesNames数组遍历文件名
  • 调用detecText()提取图片文本,传入translateText()
  • 希望将翻译结果保存到对应文件名的TXT文件中

错误原因

  1. 初始错误:直接将translateText(result)传入writeFileSync,但异步函数返回的是Promise对象,不是可直接写入的文本数据。
  2. 二次错误:translateText函数内部处理后返回数组,而writeFileSync要求传入字符串/Buffer等类型,无法直接写入数组;同时原函数中forEach不会返回有效结果,函数默认返回undefined。

解决方案

1. 修正translateText函数,确保返回字符串类型

将翻译结果数组转为字符串(可根据需求用换行、逗号等分隔):

const target = "en";

const translateText = async function translateText(text) {
  let [translations] = await translate.translate(text, target);
  // 统一转为数组格式
  translations = Array.isArray(translations) ? translations : [translations];
  
  // 提取每个翻译项的文本(需根据translate返回的实际结构调整,若返回的是字符串则直接return translation)
  const translationTexts = translations.map(translation => {
    // 示例:若translation是包含translatedText属性的对象
    return translation.translatedText || translation;
  });
  
  // 将数组转为字符串,用换行分隔每个翻译结果
  return translationTexts.join('\n');
};

2. 修正调用逻辑,确保传入正确的数据类型

ImagesNames.forEach((element) => {
  detecText(element)
    .then(async (result) => {
      const imagesdir = element.replace('public/', '');
      const finaltextsave = imagesdir.replace('.jpg', '.txt');
      
      // 等待翻译完成,获取字符串结果
      const translatedText = await translateText(result);
      
      // 写入文件
      fs.writeFileSync(finaltextsave, translatedText);
    })
    .catch((err) => console.log(err + element));
});

关键说明

  • 异步函数必须通过await或.then()获取实际返回值,不能直接传入同步方法(如writeFileSync)。
  • writeFileSync仅接受字符串、Buffer等特定类型,需确保传入的数据符合要求,数组需先转为字符串。

内容的提问来源于stack exchange,提问作者kate moss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:45:38