【问题标题】:Express error: SyntaxError: Unexpected token ':'表达错误:SyntaxError: Unexpected token ':'
【发布时间】:2022-02-02 05:38:07
【问题描述】:

在这里发帖很少。如果我的帖子遗漏了什么,我深表歉意。

这是我第一个使用 Express 和 node.js 的 API。下面的代码产生以下... SyntaxError: Unexpected token ':'

尝试移动冒号空格并用等号替换冒号,但显然这些不是解决此问题的方法。

简化了 app.get() 方法以在浏览器页面上生成字符串输出,并且效果很好。但是,当我尝试在向浏览器发送字符串之外实际做任何有意义的事情时,我会从 express 中收到此错误,这会导致应用程序崩溃。使用 sublime 文本编辑器,它在括号和括号的结束对上显示红色突出显示。有什么帮助吗?

const axios = require('axios')
const app = express()

app.get('/fitaid', (req,res) => { 

    axios.get('https://www.lifeaidbevco.com/apparel') 
      .then((response : AxiosResponse<any>) => {
        const html = response.data
        console.log(html)
    })
})

【问题讨论】:

  • 您能否详细说明您提供的错误消息究竟有哪些不清楚的地方?冒号 : 字符不属于您认为的参数定义。这是特定于 TypeScript 的约定,但 Node 的解释器无法运行未编译的 TypeScript 源代码。您能否提供相反的隐含主张的来源?
  • TLDR 看起来您正在尝试在节点中运行打字稿。您需要先将其转换为 JavaScript。
  • 如果你不是故意使用 TypeScript 并且希望它作为纯 Javascript 运行,那么将这个 .then((response : AxiosResponse&lt;any&gt;) =&gt; { 更改为这个 .then((response) =&gt; {
  • @esqew 感谢您的回复。我可以看到冒号不属于那里。希望读者能看到我显然不知道如何解决这个问题,哈哈。澄清...您知道如何解决问题以使代码正常工作吗? :-)
  • @Phix 谢谢你,这是向提供可能解决方案的方向的巨大推动。感谢您尝试解决问题的回复!你摇滚!

标签: node.js express


【解决方案1】:

正如我在评论中所说,这看起来像是由您使用的 TypeScript 语法引起的错误,所以我猜您要么不打算使用 TypeScript 语法,而是需要转换为纯 Javascript 语法或出于某种原因,您没有在运行之前将 TypeScript 编译成 Javascript。

如果您打算只编写和运行纯 Javascript,则删除回调声明中的类型信息并更改:

const axios = require('axios')
const app = express()

app.get('/fitaid', (req,res) => { 

    axios.get('https://www.lifeaidbevco.com/apparel') 
      .then((response : AxiosResponse<any>) => {
        const html = response.data
        console.log(html)
    })
})

到这里:

const axios = require('axios')
const app = express()

app.get('/fitaid', (req,res) => { 

    axios.get('https://www.lifeaidbevco.com/apparel').then((response) => {
        const html = response.data;
        console.log(html);
        res.send(html);
    }).catch(err => {
        console.log(err);
        res.sendStatus(500);
    });
});

另外,请注意,您必须在请求处理程序中发送某种类型的响应。目前,您只是显示输出到控制台而不发送任何响应。

而且,您应该从axios() 调用中捕获任何错误并发送错误响应。

【讨论】:

  • 这段代码是我的解决方案!我不知道该怎么感谢你才足够。我花了大约 3 个小时试图纠正这种情况,但您的回答为我解决了问题。
【解决方案2】:

试试下面的代码,你的代码会更简单,更容易理解

app.get('/fitaid', async (req,res) => {
    const response = await axios.get('https://www.lifeaidbevco.com/apparel');
    console.log(response.data.html);
});

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • 哇!对我的问题非常彻底的回应和潜在的解决方案!感谢您的时间。 Stackoverflow 需要更多的用户,比如那些发布彻底解决方案的用户。我也会试试这个。
  • @TranTrung 感谢您的回复!我尝试了您的代码修复,但不幸的是我在服务器上收到了未定义的响应。
  • @mrmillmill 你好。哪个是未定义的。回复?数据? html?
猜你喜欢
  • 2015-04-21
  • 2016-07-22
  • 2019-11-29
  • 2016-10-04
  • 2016-07-28
  • 2014-04-07
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多