【问题标题】:I get "SyntaxError: Unexpected identifier" when I did define the variable当我定义变量时,我得到“SyntaxError: Unexpected identifier”
【发布时间】:2019-12-18 02:52:45
【问题描述】:

当我尝试使用此代码时:

var uuid = (await SuperAgent.get(`https://api.mojang.com/users/profiles/minecraft/${username}`)).body.id;

我得到错误:

        var uuid = (await SuperAgent.get(`https://api.mojang.com/users/profiles/minecraft/${username}`)).body.id;
                      ^^^^^^^^^^

SyntaxError: Unexpected identifier

即使在我写的代码文件的顶部:

const SuperAgent = require('superagent');

我该如何解决这个问题? 谢谢。

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    这是一个意外标识符,而不是引用错误

    您的 Node.js 副本无法将 await 识别为关键字,因此它将其视为变量。您不能在一个变量后面跟着一个空格,然后是另一个变量。

    Node.js 在 Node.js 7.6 中默认添加了对 await 的启用支持。至少升级到那个版本。理想情况下,您应该升级到 10.16.2 LTS,因为这是当前支持的版本。

    【讨论】:

    • 这是一个语法错误,错误的原因是下一个标记不应该是标识符。另外值得注意的是await 是脚本上下文中的有效标识符(它被视为标识符)
    【解决方案2】:

    await 必须在 async 内 (如果你好奇,这种语法也称为 IIFE 或立即涉及的函数表达式)

    (async () => {
        var uuid = (await SuperAgent.get(`https://api.mojang.com/users/profiles/minecraft/${username}`)).body.id
    })()
    

    【讨论】:

    • 虽然这是真的,但如果这是问题所在,那么错误消息将是 SyntaxError: await is only valid in async function
    • @Quentin 在这种情况下你会得到一个 SyntaxError,即使你的节点版本支持异步/等待。 repl link
    • 其实我不在笔记本电脑前,但我认为我在这里发布的代码应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 2016-03-19
    • 2019-10-06
    • 2020-12-27
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多