异步函数未被识别
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 NOT 在 v7.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
我有一些在多个项目中使用过的异步函数,但是当我将它们添加到另一个项目时,它们突然不起作用。
这些函数之一的示例是:
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 NOT 在 v7.6
.
你可以 运行 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