gpt4 book ai didi

node.js - 无法在 Cloud9 上的 Node 上创建异步方法

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:08 25 4
gpt4 key购买 nike

我正在移植我在浏览器中编写的一些代码,发现我似乎无法在 NodeJS 中创建异步方法

class Test{
async hello(){
return "hello";
}
}

(async function(){
let test = new Test();
let hello = await test.hello();
console.log(hello);
})();

当我执行此操作时,出现错误:

/home/ubuntu/workspace/test.js:2
async hello(){
^^^^^

SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Timeout.Module.runMain [as _onTimeout] (module.js:604:10)
at ontimeout (timers.js:386:14)
at tryOnTimeout (timers.js:250:5)

这在 Node 中是不可能的,还是我在这里没有做错什么?

我正在运行Node 8.x

最佳答案

该代码中发生的错误如下:

let hello = await test.hello();
^^^^

SyntaxError: Unexpected identifier

发生这种情况是因为您在 async 函数之外使用 await 关键字。

来自docs :

The await operator is used to wait for a Promise. It can only be used inside an async function.

class Test{
async hello(){
return "hello";
}
}


(async() => {
// You can only use `await` inside async function
let test = new Test();
let hello = await test.hello();
console.log(hello);
})();

<小时/>
Is this just not possible in node, or am I don't something incorrect here? 
I am running Node 8.x

Node从7.6版本开始支持async/await,因此您可以自由使用。

更新:

如果您得到:

async hello(){
^^^^^

SyntaxError: Unexpected identifier

这意味着您正在较旧的 Node 版本上运行。尝试一下

console.log(process.version);

并且将 100% 打印低于 7.6 的版本。

您的 cli 上可能有 Node 8.x,但在 cloud9 上没有,要更新 cloud9 中的 Node ,请检查以下问题:

关于node.js - 无法在 Cloud9 上的 Node 上创建异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com