Javascript 异步/等待nodejs支持?

Javascript 异步/等待nodejs支持?,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,只是一个我无法解决的小问题。我在节点v8.1.1上,尝试使用async/await,但不起作用。我的代码片段如下所示: const axios = require('axios'); const TOKEN = '...'; const httpClient = axios.create({ baseURL : 'https://myhost/api/', headers : { 'Authorization': `Token ${TOKEN}` }

只是一个我无法解决的小问题。我在节点v8.1.1上,尝试使用async/await,但不起作用。我的代码片段如下所示:

const axios = require('axios');

const TOKEN = '...';

const httpClient = axios.create({
    baseURL : 'https://myhost/api/',
    headers : {
        'Authorization': `Token ${TOKEN}`
    }
});

try {
    const resp = await httpClient.get('users?limit=200');
} catch(e) {
    console.error(`Fail !\n${e}`);
}
当我试着运行它时,我收到了这个错误消息,但什么也没有发生:

/Users/mathieu/workspaces/galactic-tools/index.js:13
    const resp = await httpClient.get('users?limit=200');
                       ^^^^^^^^^^

SyntaxError: Unexpected identifier
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Function.Module.runMain (module.js:605:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:575:3
版本8中的节点应该直接支持Async/await,对吗?
毫无疑问,我曾尝试使用
节点--harmony async await index.js
节点--harmony index.js
运行,但没有结果。

我不能说node8中是否支持async/await,但您可以尝试将try/catch封装在如下函数中:

async function callService() {
    try {
        const resp = await httpClient.get('users?limit=200');
    } catch(e) {
        console.error(`Fail !\n${e}`);
    }
}
callService()

因为应该清楚哪个块具有异步行为。同样,为了实现这一点,httpClient.get()应该返回一个
Promise
。确保是这样。

节点v8.x支持异步/等待。但是,await必须位于异步函数中。他们总是成对的

更新: 最新的NodeJ也支持顶级异步/等待:

await
仅在
async
函数中有效。它可以工作:)但它很奇怪。您知道为什么node不能直接从根目录处理
wait
用法吗?因为规范不允许这样做。事实上,我之前检查过这个问题