异步函数未被识别

Async functions not being recognized

我有一些在多个项目中使用过的异步函数,但是当我将它们添加到另一个项目时,它们突然不起作用。

这些函数之一的示例是:

const ddbGet = async (params) => {
    try {
        const data = await docClient.get(params).promise();
        return data;
    } catch (err) {
        console.log("Failure", err.message);
        return false;
    }
};

抛出的错误是:

const ddbGet = async (params) => {

                     ^

语法错误:意外的标记(

不过我知道这些函数的语法没有问题,因为它们在其他地方都成功使用了。

我看到了一些其他问题的答案,这些问题表明 JSHint 和 ESLint 存在一些问题,但是我不认为我使用了其中任何一个,只是为了确保我安装了 ESLint 并按照建议指定了 ECMA 版本在这些答案中,仍然会抛出此错误。

我还确保我使用的是最新版本的 Node.js。

如果我删除这些函数,则会因 node_modules 文件夹中的异步函数而引发错误。

async handshake(transportName, req, closeConnection) {

   `^^^^^^^^^`

语法错误:意外的标识符

有人知道问题出在哪里吗?谢谢

因为文档,或者更确切地说 AWS Cloud9 的 Getting Started 没有保持最新(使用旧脚本安装 NVM)并且看到该项目非常旧(根据扩展评论问题的一部分),肯定是NodeJS版本。

OP 给我们的 nvm ls 输出证实了这一点(我只对其进行了格式化):

v6.15.1
-> v17.2.0 system
default -> 6 (-> v6.15.1)
node -> stable (-> v17.2.0) (default)
stable -> 17.2 (-> v17.2.0) (default)
iojs -> N/A (default)
lts/* -> lts/argon (-> N/A) 
lts/argon -> v4.9.1 (-> N/A) 
lts/boron -> v6.17.1 (-> N/A) 
lts/carbon -> v8.17.0 (-> N/A) 
lts/dubnium -> v10.24.1 (-> N/A) 
lts/erbium -> v12.22.9 (-> N/A) 
lts/fermium -> v14.18.3 (-> N/A) 
lts/gallium -> v16.13.2 (-> N/A)

default -> 6 (-> v6.15.1) 告诉我们默认使用的 NodeJS 版本(对于整个系统)是 v6.15.1

不幸的是,NodeJS NOTv7.6.

之前本地处理 async/await 语法

你可以 运行 nvm install 17.2.0 然后 nvm use 17.2.0 (或者只是 nvm use 部分,但我不知道 v17.2.0 我们是否看到输出中的已通过 NVM 有效安装),这可能会解决此特定问题。

在 Gaëtan Boyals 让我走上正确的道路后,我通过更多的研究找到了解决方案!

他是对的,Node.js 的默认版本是问题所在,解决这个问题的方法是 nvm alias default 17.2.0