【问题标题】:Sending "data" in res.send(), gives error on front end在 res.send() 中发送“数据”,在前端出现错误
【发布时间】:2021-11-17 16:03:44
【问题描述】:

我想在 res.send(data) 中发送数据。当我

console.log("This dox data",text); 

在终端中,它工作正常。它记录终端中的所有文本内容。但是在前端访问它会给我错误

router.get("/api/emailtemplates/data/:subject", (req, res) => {
  Email_templates.find({subject: req.params.subject}, (err, data) => {
    if (!err) {
      const val = data[0]['template_file_link'];
      console.log(val);
     const data= textract.fromFileWithPath(val, function( error, text ) {
        console.log("This dox data",text);
    });
    
    res.send(data);
    } else {
      console.log(err);
    }
  });

【问题讨论】:

  • 什么错误,你怎么称呼它
  • @achyuta - 你遇到了什么错误?
  • App.js const onsubjectChange = (value,e)=>{setLink(e.label); setChooseSubject(value);console.log("this is subject",value)} Service.js export const getEmailTemplateSub = (state="")=>{ Axios.get(http://localhost:3002/api/emailtemplates/data).then(res => state( res.data) ).catch(err=>console.log(err)) };
  • while我在前端选择主题我得到一个错误 events.js:292 throw er; // 未处理的“错误”事件类型错误:无法读取未定义的属性“模板文件链接”
  • 更新问题而不是在 cmets 中发布代码

标签: javascript node.js reactjs


【解决方案1】:

你试图返回错误的东西,你需要在 textract 函数的回调中发送响应

router.get('/api/emailtemplates/data/:subject', async (req, res) => {
  try {
    const templates = await Email_templates.find({ subject: req.params.subject });
    const val = templates[0].template_file_link;
    console.log(val);
    textract.fromFileWithPath(val, (error, text) => {
      console.log('This dox data', text);
      return res.json({ text });
    });
  } catch (error) {
    console.log(error);
    return res.status(500).json({ error: true });
  }
});

【讨论】:

  • 你改变了什么?你为什么改变它?代码转储不是有用的答案。
  • 我更改了发送给客户端的位置并重新格式化为 async/await 语法
  • 感谢@LucjanGrzesik,它有效。
  • 你为什么不接受@AchyutaNantaPanda的答案?
  • 对不起 Lucjan Grzesik,我是堆栈溢出的新手,我不知道如何使用它。
【解决方案2】:

该代码会给您错误Uncaught ReferenceError: Cannot access 'data' before initialization。您正在尝试使用在该常量初始化之前在 if (!err) 块中声明的 data 常量,因为您已将 data 用作您将要接收的参数的名称来自Email_templates.find in 的数据以及将textract.fromFileWithPath 的结果存储为常量。这是一个更简单的问题示例:

function example(err, data) {
    //                ^^^^−−−−−−− parameter called `data`
    if (!err) {
        const val = data[0]['template_file_link'];
        //          ^^^^−−−−−−−−− ReferenceError here
        //              because this is trying to use
        //              the constant below before it's
        //              initialized (it's in the "Temporal
        //              Dead Zone")
        
        const data = "whatever";
    }
}
example(null, [{template_file_link: ""}]);

为它们使用不同的名称。例如:

router.get("/api/emailtemplates/data/:subject", (req, res) => {
    Email_templates.find({subject: req.params.subject}, (err, data) => {
        if (!err) {
            const val = data[0]['template_file_link'];
            console.log(val);
            const fileData = textract.fromFileWithPath(val, function( error, text ) {
            //    ^^^^^^^^
                console.log("This dox data",text);
            });

            res.send(fileData);
            //       ^^^^^^^^
        } else {
            console.log(err);
        }
    });
});

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2021-07-11
    • 1970-01-01
    • 2015-01-14
    相关资源
    最近更新 更多