2017-11-25 175 views
3

我试图在我的项目中使用aysncawait我首先在FiddleJS中尝试过这些,并且它工作正常,但是当我尝试在我的IDE(PHPSTORM 2017)中执行时,我出现错误:异步和等待一些IDE的错误

async function test(url){ 
     ^^^^^^^^ 

SyntaxError: Unexpected token function 
    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 Module.runMain (module.js:604:10) 
    at run (bootstrap_node.js:389:7) 
    at startup (bootstrap_node.js:149:9) 

我也在vscode上试过并得到了同样的错误。

这里是我试图做的:

async function test(url){ 
    console.log(await check(url)); 
} 

app.get('/test', (req, res) => { 

    var url = req.query.url; 
    console.log(url); 
    test(url); 

    console.log(url) 
}); 

function check(url){ 

    console.log(url); 

    return new Promise((resolve, reject) => { 

     request(url, function (error, response, body) { 

      if(response.headers.server === 'test'){ 
       url = url + '123'; 
       resolve(url); 
      } else { 
       reject('error'); 
      } 

     }); 

    }); 
} 

正如我所说的,在FiddleJS它工作正常(https://jsfiddle.net/voogcrbf/2/),不知道为什么会出现在IDE的错误。

希望你能帮助我。

回答

2

异步的await是在节点7.3版推出。什么是您使用的node.js版本,它取决于那不ide。

+0

好点。错误本身就是在代码执行过程中,与IDE无关,但是这段代码中的语法高亮显示错误是由于IDE没有及时更新现代JS。 –

1

PhpStorm本身不支持最新的JavaScript.next。

我发现了用于IntelliJ产品的this JavaScript.next support plugin,这些产品可能会在某些功能进入核心之前有所使用。

从该网站的一些片段:

Javascript ES6/7 syntax improvements and additions.

Syntax highlights for annotations and async, await, from

+0

它不起作用。还有相同的错误 – zb22

+0

插件页面上的某个人说你需要在''语言和框架' - >'javascript' - >'javascript语言版本'中设置语言版本,或许试试? –

+0

试过这个,我选择了ECMAScript 6 – zb22